随笔分类 - 基础算法-差分
摘要:[BZOJ3307] 雨天的尾巴(树上差分+线段树合并) 题面 给出一棵N个点的树,M次操作在链上加上某一种类别的物品,完成所有操作后,要求询问每个点上最多物品的类型。 N, M≤100000 分析 考虑树上差分。对于每条链(x,y),我们在x,y打一个+标记,lca(x,y)和lca(x,y)的父
阅读全文
摘要:题面 分析 对于一个区间修改(s,e,v),我们可以将它差分,这样就变成了单点修改s和e+1(s插入,t+1删除) 我们用主席树维护差分数组的前缀和,第i棵主席树维护区间[1,i]之间的所有差分值 那么查询我们直接在第i棵主席树里查第k大即可 注意: 1.主席树里面要维护两个值,一个是值落在区间[l
阅读全文
摘要:题面 "传送门" 分析 先考虑的做法,先按s从小到大排序,每个串的数显然形成了n个连续区间,且这些区间的左端点升序排列,然后把区间合并就可以知道有多少个不同的数了 然后考虑优化 对于s[i]产生的区间,我们考虑s[i]和s[i+1]产生的区间之间的间隔 若
阅读全文
摘要:题面 "传送门" 分析 一开始考虑贪心和DP,发现不行 考虑差分: 设d[i]=c[i+1] c[i] (i include include define maxn 100005 using namespace std; int n; int a[maxn]; int b[maxn]; int da
阅读全文