随笔分类 -  基础算法-差分

摘要:[BZOJ3307] 雨天的尾巴(树上差分+线段树合并) 题面 给出一棵N个点的树,M次操作在链上加上某一种类别的物品,完成所有操作后,要求询问每个点上最多物品的类型。 N, M≤100000 分析 考虑树上差分。对于每条链(x,y),我们在x,y打一个+标记,lca(x,y)和lca(x,y)的父 阅读全文
posted @ 2019-07-23 21:23 birchtree 阅读(295) 评论(0) 推荐(0) 编辑
摘要:题面 分析 对于一个区间修改(s,e,v),我们可以将它差分,这样就变成了单点修改s和e+1(s插入,t+1删除) 我们用主席树维护差分数组的前缀和,第i棵主席树维护区间[1,i]之间的所有差分值 那么查询我们直接在第i棵主席树里查第k大即可 注意: 1.主席树里面要维护两个值,一个是值落在区间[l 阅读全文
posted @ 2019-05-12 11:51 birchtree 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题面 "传送门" 分析 先考虑O(nk)的做法,先按s从小到大排序,每个串的数显然形成了n个连续区间[si+l,si+r],且这些区间的左端点升序排列,然后把区间合并就可以知道有多少个不同的数了 然后考虑优化 对于s[i]产生的区间,我们考虑s[i]和s[i+1]产生的区间之间的间隔 若 阅读全文
posted @ 2019-04-06 23:18 birchtree 阅读(356) 评论(0) 推荐(0) 编辑
摘要:题面 "传送门" 分析 一开始考虑贪心和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 阅读全文
posted @ 2019-02-09 09:46 birchtree 阅读(298) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示