上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要: "题面" 题解 这种题目一看就是重链剖分裸题,还是区间修改,单点查询,查询之前在遍历时要记一个$delta$,因为这一次的起点就是上一次的终点,不需要放糖,所以可以用$BIT$来写,但我写完$modify$才反应过来,所以没改了。 cpp include include include using 阅读全文
posted @ 2018-11-03 17:00 water_mi 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 题意 给定$n​$个矩形$(x_1,y_1,x_2,y_2)​$,求这$n​$个矩形的面积并 题解 扫描线裸题,可以不用线段树维护,$O(n^2)$是允许的。 cpp include include include using std::sort; using std::unique; using 阅读全文
posted @ 2018-11-01 21:39 water_mi 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 这里是摘要 阅读全文
posted @ 2018-10-30 20:23 water_mi 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题解 设$f[u][0/1/2]$表示当前节点$u$,放或不放($0/1$)时其子树满足题目要求的最小代价,$2$表示$0/1$中的最小值。 则有: $$ f[u][0]=\sum_{v\in son[u]}f[v][1]\\ f[u][1]=\sum_{v\in son[u]}f[v][2]\\ 阅读全文
posted @ 2018-10-23 19:44 water_mi 阅读(186) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-23 15:27 water_mi 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 题解 不妨采取重链剖分的方式把路径剖成区间,然后用线段树维护,考虑如何合并一个区间 由于重链剖分跳$top$时,两个端点的路径是独立的,所以不能像普通查询那样直接累加贡献,要分开处理,最后存在一个特殊情况,要将左区间的左右端点反置。(画图即可明白) 代码 cpp include include us 阅读全文
posted @ 2018-10-23 14:43 water_mi 阅读(154) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-22 14:28 water_mi 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 题意 见原题 题解 重链剖分模板题 cpp include include using std::swap; typedef long long ll; const int N = 1e5 + 10; int n, m, c[N], opt, x, y; int dep[N], siz[N], fa 阅读全文
posted @ 2018-10-21 18:26 water_mi 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题意 原文很清楚了 题解 重链剖分模板题,用线段树维护即可。 cpp include include include using std::max; using std::swap; const int N = 3e4 + 10, Inf = 1e9 + 7; int n, q, c[N], x, 阅读全文
posted @ 2018-10-21 18:24 water_mi 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 题意 给定$n$个软件包,每个软件包都有一个依赖软件包,安装一个软件包必须安装他的依赖软件包,卸载一个软件包必须先卸载所有依赖于它的软件包。给定$m$此操作,每次一个操作$install/unistall$表示安装或者卸载。 题解 可以通过简单画图看出,在这个树形结构的依赖层次图上,安装一个包相当于 阅读全文
posted @ 2018-10-21 18:19 water_mi 阅读(184) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 下一页