摘要: D - Reverse Sort Sum 线段树 / 树状数组 从后往前遍历,如果 c[i] = i, 则说明第 i 个位置上的 1 是从时刻1到 时刻 i 都存在的,所以这一位最开始就是 1,此时若前 i 位有 k 个 1,它们一定在 [i - k + 1, i] 位置上,这个区间 - 1,这是第 阅读全文
posted @ 2022-05-12 21:08 hzy0227 阅读(23) 评论(0) 推荐(0) 编辑
摘要: C - Line Empire 贪心 每次征服一个国家之后,如果要将首都迁过来,显然之后迁不如现在迁 在征服第 i 个国家后,可利用前缀和 \(O(1)\) 算出 迁或不迁 时征服之后国家的代价,若迁的代价小就迁,否则就不迁 #include <iostream> #include <cstring 阅读全文
posted @ 2022-05-12 20:46 hzy0227 阅读(27) 评论(0) 推荐(0) 编辑
摘要: D - Optimal Partition 线段树 + dp 设 s[i] 为前缀和数组,f[i] 为考虑前 i 个数的最大答案。当枚举到第 i 个数时,有状态转移方程如下 \[ 1. \;s[i] -s[j]>0,\;即\;s[j]<s[i]\;(j<i)\\f[i]=max(f[j]+i-j)\ 阅读全文
posted @ 2022-05-12 20:43 hzy0227 阅读(13) 评论(0) 推荐(0) 编辑
摘要: E - Preorder 树形dp 若两颗满二叉树深度相同,一颗二叉树交换任意两个兄弟结点及其子树可以得到另一颗二叉树,则成这两颗二叉树同构 设 u 的左右儿子为 ls,rs 若 ls 与 rs 同构,则 \(ans_u=ans_{ls}*ans_{rs}\) 否则,ls,rs 交换又是一种新方案, 阅读全文
posted @ 2022-05-12 20:39 hzy0227 阅读(26) 评论(0) 推荐(0) 编辑
摘要: D - Insert a Progression 绝对值 首先算出不插入时的答案 如果插入的数在 [minn, maxn] 中,则没有代价 如果 x > maxn, 则有 \((maxn,x]\) 这些数要产生代价,把他们放到最大值后面,则代价为 \(2*(x-maxn)\) 若放到开头或结尾,则代 阅读全文
posted @ 2022-05-12 20:32 hzy0227 阅读(67) 评论(0) 推荐(0) 编辑
摘要: D - Progressions Covering 线段树维护差分序列 把问题看作是每次给 b 数组的一个长度为 k 的子段减去一个等差数列,直到所有数小于等于 0 因为子段长度严格为 k,因此对于当前 b 数组中最右边的大于 0 的元素,只能让它尽量作为子段右端点 为了模拟这个过程,在子区间中减去 阅读全文
posted @ 2022-05-12 20:30 hzy0227 阅读(39) 评论(0) 推荐(0) 编辑
摘要: C - Water the Trees 二分 因为奇数天 +1, 偶数天 +2,所以找到最大的 \(h[i]\) 记为 maxn,最后的高度只能在 maxn, maxn + 1 中,因为如果答案为 maxn + 2,则可以去掉一些操作,使最大高度为 maxn 二分答案即可 #include <ios 阅读全文
posted @ 2022-05-12 20:27 hzy0227 阅读(14) 评论(0) 推荐(0) 编辑
摘要: E - Math Test 拆绝对值 要求 \(\sum\limits_{i=1}^n|r_i-x_i|\) 的最大值,可以将绝对值拆开,对于每一个 i,若 \(r_i>=x_i\), 设 \(sgn[i] = 1\). 否则设为 \(sgn[i]=-1\), \(\sum\limits_{i=1} 阅读全文
posted @ 2022-05-12 20:26 hzy0227 阅读(19) 评论(0) 推荐(0) 编辑
摘要: D - Shuffle 组合数学 记当前枚举的区间从第 i 个 1 到 第 i + k - 1 个 1,记 j = i + k - 1, 那这些 1 可以随意排列的区间为 \([pos[i-1]+1, pos[j+1]-1]\), 设为 \([l,r]\), 这个区间对答案的贡献为 \(\binom 阅读全文
posted @ 2022-05-12 20:24 hzy0227 阅读(30) 评论(0) 推荐(0) 编辑
摘要: C - Set or Decrease 一定是先对最小的元素使用 -1 操作 再从大到小把元素变为最小值 这样一定是最少操作将序列和减到 k 一下 操作数 = 操作 1 的个数 + 操作 2 的个数,操作 1 可能有很多次,操作 2 是将较大的元素变为最小值,所以可能是 [0, n - 1] 次,所 阅读全文
posted @ 2022-05-12 20:23 hzy0227 阅读(91) 评论(0) 推荐(0) 编辑