Grandmaster 计划试题乱做 Part 1

CF1614E Divan and a Cottage \(\checkmark\)

随笔

看了半天才懂题意,洛谷翻译真的是良莠不齐
发现答案不降就做完了?
用动态开点线段树维护即可?

solution

确实如此(

CF1612G Max Sum Array \(\checkmark\)

随笔

对于每一种颜色从前到后有递增的权值系数
不妨贪心的从后往前放使得 \(f\) 最大,每次显然得放系数最大的
发现如果选择某个颜色里从后往前数的第 \(i\) 个位置,那么我们应该已经选完了后面的所有位置
具体实现感觉差分下差不多
然后搞搞就行?

solution

确实如此(

CF1611G Robot and Candies \(\checkmark\)

随笔

一眼网络流,没啥前途?
根据 \(x+y\) 的奇偶性分成两部分做?
然后不会了(

solution

先把问题按 \(x+y\) 的奇偶性分成两部分
原题的两种操作 \((x,y)\to(x+1,y-1),(x+1,y+1)\) 可以用新坐标系转换成 \((x,y)\to (x+1,y),(x+1,y+2)\)
其中新坐标系的 \((x,y)\) 第一维表示原行号,第二维表示原对角线号(\(x+y\)
问题转化成能向下和向右走
显然,问题的上界是每列走一条路径
我们贪心的继续解决问题
从左往右一列一列扫,如果该列不存在仍未覆盖的 \(1\) 则跳过,否则需要开一条路径
对于一条已走到 \((x,y)\) 的路径的走向

  1. \(x\) 列仍有点未覆盖,往下走
  2. 否则往右走试图覆盖更多点

贪心的正确性显然

总结

这种题应该多试试?转化题意要彻底点

CF1582G Kuzya and Homework \(\text{鸽}\)

随笔

称满足条件的区间为“好”区间
一开始想分治,感觉没啥前途
发现对于固定的左端点 \(l\),好区间的右端点属于某个 \([l,p_l]\)
对于每个素因子考虑,记第 \(i\) 个质因子出现前缀和为 \(S_i(x)\)
那么每个 \(p_l\) 只需要从每个质因子考虑出第一个 \(S_i(r)>S_i(l-1)\) 进行限制即可
显然目前复杂度是暴力(
然后对于 \(\sqrt W\) 内的质因子可以暴力做,复杂度 \(O(n\pi(\sqrt W))\)
对于其他大质因子,显然每个位置的贡献大小最多是 \(1\),且每个位置只能对一个大质数贡献
然后把所有当前大质数有贡献的位置拿出来考虑,每个除法的位置都会对前面一段的 \(p\) 有贡献
由于 \(p\) 对所有贡献取最小值,这部分我们只要贡献极长段即可
应该可以用线段树标记永久化做到 \(O(n\log n)\)
感觉做法好复杂(,还不一定跑得过

solution

好像 std 是 \(O(n\log n)\) 的,被偏序了
大体思路一致,但好像不需要复杂的分讨(
全都按上述的第二种方法维护就是 \(O(n\omega(W)\log n)\)
中间的二分/set之类的东西可以用单调栈优化掉,变成 \(O(n\log n)\)
区间取 min 的部分用线段树标记永久化大概还是两 \(\log\),可以通过 st 表的思想优化
大概是将 \(n\log n\) 个区间取 min 操作用 st表的询问方法劈成 \(2n\log n\)
区间长度全部变成 \(2\) 的幂次,一直下传到叶子即可
复杂度优化到 \(O(n\log n)\)

CF1572B Xor of 3 \(\checkmark\)

随笔

稍微转换下题意,进行对前缀异或和的一些操作
然后编一编条件就做完了?

solution

确实如此(
但罚了好多次时

CF1613F Tree Coloring \(\checkmark\)

随笔

就先无脑容斥,分治ntt一手,没啥思维难度的样子

solution

确实如此,但没能一遍默写对分治ntt,是否要准备一套成熟的板子?

CF1608D Dominoes \(\checkmark\)

随笔

赛时FST题
记一个串的 BB 个数为 \(a\),BW 为 \(b\),WB 为 \(c\),WW为 \(d\)
一开始直接猜了一手充要条件(\(2a+b+c=n\))觉得很对
发现 dp 转移可以用生成函数简单表示
结果实现完看样例才发现条件不对,以为寄了
但仔细想想,构造了一手方案发现只有一点点小情况需要容斥
赛时的组合数边界寄了,导致小号没上 \(\color{orange}{\text{Master}}\),麻了

solution

没啥好 solution 的,走个流程

CF1585F Non-equal Neighbours \(\checkmark\)

随笔

从前往后 dp,对于二维状态的暴力做法试图用其前缀和状态直接转移
发现转移在单调栈上做就行了

solution

确实如此
好像和题解做法不大一样?

CF1578L Labyrinth \(\checkmark\)

随笔

首先肯定在最大生成树上走
直接按 \(c_i\) 从小到大贪心走?
感觉可能有点问题

solution

考虑 kruskal 重构树,走法一定是走完一颗子树再去其他子树
容易解决

CF1558D Top-Notch Insertions \(\checkmark\)

随笔

首先假装进行完插入排序的序列已经得到,称排完序后的序列每一个元素在原序列的映射为 \(p\)
可以得到一个由 \(<\)\(\leq\) 连成的不等式串
答案的求法实际上很简单,容易通过生成函数推得一个组合数
我们仅需求得 \(p_i>p_{i+1}\)\(i\) 个数即可
发现显然这样的位置只会出现在那 \(m\) 个涉及到的位置里,我们维护出 \(m\) 个涉及到位置的相对位置即可
容易用平衡树实现

solution

就这么做

posted @ 2021-12-11 15:21  juju527  阅读(307)  评论(2编辑  收藏  举报