传送门:
题意:给一序列,给一串操作,按顺序修改序列内容,分两种类型
类型一:1 p x ,位置p的数字改为x
类型二:2 x,序列中所有小于x的数字全改为x
刚开始想着直接线段树,单点修改和区间修改,头脑风暴了一会儿,觉着lazy标记改动容易出错,果断弃了
嘻嘻,心态放好先
开始草稿纸上乱画分析(瞎搞
对于type 2,最后改的肯定是x的最大值,一直取max就好啦
难搞的是type 1,每次改动都得看后续的type 2有没有对x有影响,就不能单纯标记了
emmmm 等等,既然只有后续的type 2对type 1有影响,而且也只有最大值会被保留,那从后往前找每个位置到末尾的最大值就好啦
一个后缀最大值数组就解决了
然后就是一些细节了,后缀最大值数组是对操作进行的,并非原序列下标,需另开个数组记录好对应关系
#include#include #include #include #include #include #include #include