随笔分类 -  2011

摘要:题面 首先考虑没有环的情况,那么答案肯定就是 \(1\) 到 \(n\) 简单路径的边权异或和。如果出现环,设这个环边权异或和为 \(c\),从这条 \(1\) 到 \(n\) 简单路径到这个环的路径边权异或和为 \(k\),那么答案为 \(dis_n\oplus k\oplus c\oplus k 阅读全文
posted @ 2022-05-20 12:04 cunzai_zsy0531 阅读(30) 评论(0) 推荐(0)
摘要:题面 这个题相当于是把每个数的值作为 \(x_i\),在原序列中的位置为 \(y_i\),建出笛卡尔树,直接输出先序遍历(字典序最小)即可。 点击查看代码 #include<iostream> #include<cstdio> using namespace std; inline int rd() 阅读全文
posted @ 2022-05-19 16:13 cunzai_zsy0531 阅读(27) 评论(0) 推荐(0)
摘要:题面 基本上所有树剖题都可以用LCT维护。两种思路,一种是直接暴力地维护每个点表示的区间的左右端点颜色和颜色段数,另一种是把连接同种颜色的边边权设为 \(0\),不同种颜色设为 \(1\),然后维护路径和即可。 一个注意的点在于LCT中的 \(tag\) 是对所有跟左右有关的值进行取反的标记。一定不 阅读全文
posted @ 2022-05-18 21:49 cunzai_zsy0531 阅读(23) 评论(0) 推荐(0)
摘要:题面 考虑整体二分。solve(L,R,l,r) 表示解决的子问题为答案区间在 \([L,R]\) 内的所有问题 \(q_l...q_r\)。边界条件很容易,主要是考虑如何二分。\([L,R]\) 这一维相当于是描述的时间,那么考虑一个 \(mid\),然后把所有 \([L,mid]\) 时刻的修改 阅读全文
posted @ 2022-05-18 20:03 cunzai_zsy0531 阅读(35) 评论(0) 推荐(0)
摘要:题面 感觉和板子差不多,但是仔细思考一下就会发现,用两个指针扫的时候很难维护 “不选某个子树”的最小值。这时候需要设计一个排序和贪心方案,使得能够使用模板那种双指针方式解决问题。 首先是几个定义:在对于某个根 \(rt\) 更新答案的时候,设 \(a[]\) 表示子树的所有点,\(b[]\) 表示每 阅读全文
posted @ 2022-05-11 18:45 cunzai_zsy0531 阅读(54) 评论(0) 推荐(0)