摘要: 线段树 区间加,区间和 #include <iostream> #include <cstring> using namespace std; typedef long long ll; const int N = 1e5 + 10; ll w[N]; struct Node { int l, r; 阅读全文
posted @ 2022-05-16 23:43 hzy0227 阅读(14) 评论(0) 推荐(0) 编辑
摘要: E - Gold Transfer 树上倍增 + 贪心 由于 \(c_i>c_{p_i}\), 所以一定是把结点祖先的黄金采完才会采这个结点的,因此某个点有无黄金这个性质具有单调性,靠近根的一侧没有,靠近叶子的有,所以可以倍增查到某个结点上方离根最近的有黄金的结点,从该点开始采 由于一个点被采完才会 阅读全文
posted @ 2022-05-16 22:09 hzy0227 阅读(34) 评论(0) 推荐(0) 编辑
摘要: D - Inconvenient Pairs 思维 不方便的点对就是类似于,这种在同一行块或同一列块的两个点,他们的距离一定大于曼哈顿距离 其中红色为横向点对,紫色为纵向点对 所以可按 y 递增排序,找到每一个行块有多少个点,这一行块中的点对贡献为:\(\binom {cnt}2-\sum\bino 阅读全文
posted @ 2022-05-16 21:51 hzy0227 阅读(31) 评论(0) 推荐(0) 编辑
摘要: D - The Strongest Build BFS + 优先队列 + 哈希 将被 ban 掉的策略存到 map 里,一开始将最大的策略放入优先队列中,每次取队首策略是否被 ban 掉了,如果没有当前策略就是答案 如果被 ban 掉了,那放入比该策略小一点的策略,设队首策略为 \(b_1,b_2, 阅读全文
posted @ 2022-05-15 15:45 hzy0227 阅读(26) 评论(0) 推荐(0) 编辑
摘要: D - Excellent Arrays 思维 + 组合数学 + 树形结合 \(a_i+a_j=i+j\), 看到这样的形式先移项变成 \(a_i- i=-(a_j-j)\), 令 \(k_i=a_i-i\), 即 \(k_i=-k_j\) \(k_i=a_i-i\) 即 \(y=x+k_i\), 阅读全文
posted @ 2022-05-15 12:46 hzy0227 阅读(15) 评论(0) 推荐(0) 编辑
摘要: D - Playoff Tournament 树形dp 将字符串颠倒,并把每个结点的左右儿子交换,即可变成二叉树的形式(本题中让左右儿子交换) 首先 dp 算出当前字符串每个结点的答案 注意到修改一个结点时只会影响到他上方一条链上的结点,数目为 \(logn\) 级别,因此每次修改复杂度为 \(lo 阅读全文
posted @ 2022-05-15 10:58 hzy0227 阅读(18) 评论(0) 推荐(0) 编辑
摘要: C - Unstable String DP 状态表示:\(f[i][0/1]\) 为以第 \(i\) 个字符且这个字符为 \(0/1\) 结尾的子串的个数 状态转移见代码 因为统计的是有多少子串是稳定的,不是统计有多少稳定的字符串,所以一个位置上只能取 \(0/1\) 中最长的 所以答案为 \(\ 阅读全文
posted @ 2022-05-15 10:52 hzy0227 阅读(22) 评论(0) 推荐(0) 编辑
摘要: C - Manhattan Subarrays 枚举 多观察数据,发现当子数组中元素个数 >= 5 时一定不满足条件,因此枚举子数组个数为 3, 4 即可 #include <iostream> #include <cstring> #include <algorithm> #include <ve 阅读全文
posted @ 2022-05-12 23:45 hzy0227 阅读(15) 评论(0) 推荐(0) 编辑
摘要: E - Boring Segments 线段树 + 双指针 题意:有一些线段,每条线段有权值,能把整个区间覆盖住的集合为好集合,求好集合中线段的最大权值 - 最小权值的最小值 首先关于线段覆盖区间的问题,可化段为点,覆盖了一个点视为覆盖了这个点和它右边的长度为 1 的段,因此覆盖了 \([l,r]\ 阅读全文
posted @ 2022-05-12 21:47 hzy0227 阅读(18) 评论(0) 推荐(0) 编辑
摘要: D - Say No to Palindromes 枚举 可观察到只有类似 abcabcabcabc..., bacbacbac... 等 abc 三个字母都循环出现才满足要求 可记录 \(cnt[i][j][k]\),前 \(i\) 个中 \(a, b, c\) 分别在 模 \(3\) 余 \(0 阅读全文
posted @ 2022-05-12 21:21 hzy0227 阅读(24) 评论(0) 推荐(0) 编辑