摘要:
嘟嘟嘟 好题,好题…… 看这个修改和询问,就知道要么是求完dfs序后线段树维护,要么是树剖。又因为这道题都是子树的操作,没有链上的,所以线段树就够了。 然而重点不是这个。这道题最麻烦的是线段树pushdown时对于每一个节点打的标记都不一样,因为每一条边上的能力值不一样。这也是这道题最巧妙的一点:我 阅读全文
摘要:
题面好难找:嘟嘟嘟 贪心 + dp。 首先要按bi的降序排序,让每一次减少大的数尽量靠前。为啥咧?于是我们就需要证明:令sum = a1 - (1 - 1) * b1 + a2 - (2 - 1) * b2 + a3 - (3 - 1) * b3 + ……+ an - (n - 1) * bn,整理 阅读全文
摘要:
嘟嘟嘟 水贪心。 当经过一个加油站的时候,记下这个加油站能加的油,然后没油的时候从经过的加油站中选择加油最多的加。 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<c 阅读全文
摘要:
嘟嘟嘟 这道题其实挺显然的。 首先dijkstra跑出最短路图,然后在最短路图上求最小割。 正确性显然。 需要注意的是,在新图中添加最短路图的边的时候,一定是跑完dijkstra再加边,如果边跑dijkstra边加边,得到的是最短路树,而不是图。我因为这个WA了好几发。 1 #include<cst 阅读全文
摘要:
嘟嘟嘟 线段树好题。 其实挺水的,想暴力怎么做:每一次从这个点开始向两边扩,直到遇到第一个摧毁的房屋。 那么把暴力改成倍增,然后线段树查询区间和是否为0。时间复杂度O(nlog2n)。 题解好像有线段树的O(nlogn)的做法,但是特别麻烦,也没怎么看懂。 1 #include<cstdio> 2 阅读全文