摘要:
Miku 显然思路是倒着扫,倒着染。 然而这样有一个问题,这样做,那么对于已经染色的区间是不需要重新染色的, 但是遍历的时候可以找到已染色区间的一个端点,另一个在哪? 用并查集解决 fa[x]为x右边第一个没染色的端点 然后就O(N)解决了 提示:n+1个点也要初始化,因为只要n点被染色,那么一定指 阅读全文
摘要:
Miku 莫名其妙每一天 如果一天满足和前面的连续一些天可能不下降,那么它的最大气温一定不小于之前序列的每一天的最小气温 然后这东西用单调队列维护 再开一个队列维护这一段序列的堆头 就Ac了 #include<iostream> #include<cstdio> #include<algorithm 阅读全文
摘要:
Miku 贪心 按照时间从前往后尽可能的修 如果能修就修,修不了的话 我们可以选择撤掉一个以前修的腾出时间来,但是,腾出两个显然更蠢 那么,显然无论腾不腾,截止到此建筑,能修的数量最多一定() 由此观之,应该把已修的最大的取出来,然后进行比较,放进小的,扔掉大的,来为后面腾时间 #include<i 阅读全文
摘要:
Miku 线性dp+单调队列优化 单独的线性dp很好想,也很好卡。需要用单调队列优化。 对于1~l-1的点,他们是不可能到达的,(当然还有,不过因此for从l开始)。初始化dp为一个大负数,因为有negative答案 然后从l~n枚举(这里是要算dp的点),画个图就很好理解,单调队列扫到的点和枚举的 阅读全文
摘要:
树上差分板子的板子 Miku #include<iostream> #include<cstdio> using namespace std; int head[2*500001]; int p; struct b{ int to; int ne; } e[2*500001]; int fa[2*5 阅读全文
摘要:
树上差分!!! 这是一道模板题的稍微改编 首先,啥是树上差分 就和名字一样,书上的差分 倘若我们要给(u,v)的路径上加上k 则给u+k,v+k,然后lca(u,v)-k(因为事实上lca处就加了一个,可是这么干加了俩) father(lca( ))-k(这里及更高处根本没动过,消除影响) 所以这题 阅读全文