摘要: n<=300000个点,开始是独立的,m<=300000个操作: 方法一:单点修改、查询,区间修改、查询?等等等等这里修改是块修改不是连续的啊,那就让他连续呗!具体方法:离线后,每次连接两棵树u,v时,把v放到u树根节点的最后,使其dfs序最后,最后扫一次把每棵树dfs一下搞出这个序列,然后线段树操 阅读全文
posted @ 2018-01-11 19:54 Blue233333 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 给n<=100000的树,每个点有权值和代价,有m<=1e9的容量,问:一个点权值*子树内代价总和不超过容量的最大点数的最大值。 其实就是要合并。平衡树、线段树、可并堆挑一个。 可并堆由于没法二分,故“正难取反”,维护最大的,在不够装时弹掉。 1 #include<string.h> 2 #incl 阅读全文
posted @ 2018-01-11 09:53 Blue233333 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 可并堆模板??又敲了一次,一遍过,很好。 1 #include<string.h> 2 #include<stdlib.h> 3 #include<stdio.h> 4 #include<math.h> 5 //#include<assert.h> 6 #include<algorithm> 7 / 阅读全文
posted @ 2018-01-11 08:55 Blue233333 阅读(155) 评论(0) 推荐(0) 编辑
摘要: n<=1e6个数,把他们修改成递增序列需把每个数增加或减少的总量最小是多少? 方法一:可以证明最后修改的每个数一定是原序列中的数!于是$n^2$DP(逃) 方法二:把$A_i$改成$A_i-i$,变论文题:论文 大概证明是这样的:考虑合并两个区间的答案,假如一个区间答案是{u,u,u,……,u},另 阅读全文
posted @ 2018-01-11 08:24 Blue233333 阅读(142) 评论(0) 推荐(0) 编辑