摘要:
没啥可说的,树链剖分 代码 阅读全文
摘要:
第一问跑最大流,第二问新建一条边连接0和1,流量为上第一问的答案+k,费用为0,接下来图中每条边拆成两条边,第一条容量为C费用为0,第二条容量无穷费用为W,再跑一遍费用流即可。 代码 阅读全文
摘要:
主席树 阅读全文
摘要:
莫队算法,先处理dfs序,然后将询问进行一下处理,假设询问x,y两点,x的的dfs序区间是[xl,xr],y的dfs序是[yl,yr],那么这两个区间如果包含,那么询问区间[min(xl,yl),max(xl,yl)],否则询问区间[min(xr,yr),max(xl,yl)]。对于算法当前处理的一 阅读全文
摘要:
做法是每个询问先算出询问区间中花的种类减去区间中只有一朵花的花的种类,这两个子问题都不算难,具体看代码吧。询问可以离线处理,用树状数组维护,复杂度O(nlogn)。 不知道是想的复杂了还是打的太low,运行时间有点久。。 代码 阅读全文
摘要:
莫队算法,只考虑对一个序列加入数字的话,重要度的维护是O(1)的,排完序后的询问,若左端点是在同一块中的话,右端点递增。因为右端点是递增的因此可以O(1)维护,而左端点的话,对于每个询问我们可以暴力插入,询问后还原,对于一次询问来说是O(sqrtn)的 ,因此总复杂度O(nsqrtn) 阅读全文
摘要:
第一问不解释,对于第二问的处理,可以使用cdq分治,假设分治的询问区间是[L,R],那么我们对于标号在[L,mid]的修改操作赋予一个权值,因为在当前[L,R]中[L,mid]的修改操作只会对[mid+1,R]的询问操作,所以第i修改操作至少经过m-i的时间,因此赋予的权值是m-i,而对于[mid+ 阅读全文
摘要:
cdq分治。 代码 阅读全文
摘要:
首先求出树的dfs序,对于第一种操作和第二种操作分开处理,第一种操作比较经典,就不说了。第二种操作其实和第一种也很类似,查询x点到根的权值和sum(x)=(disx+1)*v(x)-w,其中disx为x点到根的距离,v(x)表示以x到根之间的点为第二类操作的子树根所进行操作的权值和,这样相乘明显会有 阅读全文
摘要:
直接跑了莫队勉强跑过,正解应该是一开始算出所有区间[1,i]的sg值,然后考虑从区间[1,i]到区间[2,i]的sg值变换,发现只有区间[2,next[a[1]]-1]内,sg值大于a[1]的数字sg值全部变成a[1],这里next[a[1]]表示下一个与a[1]相同的数字的位置。用线段树维护一下即 阅读全文