202408 集训测试 笔记
没写的题意思是暑假没做出来,没什么时间补了。
Day1A
简要题意:
解析:假设
的方案数。
DP 求即可,设
时间复杂度
Day1B CF82D Two out of Three
解析:发现在第
时间复杂度
Day1C
简要题意:求
解析:如果考虑选择
| 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|
左右相邻的不能选,上下相邻的不能选。
即使
故用状压 DP
对于每个没有出现过的
时间复杂度
Day2A
简要题意:
解析:设
答案在
时间复杂度
Day2B
简要题意:给出
解析:设
每划分一次,层数就会增加,所以加上
答案是
时间复杂度
Day2C
简要题意:一个
解析:直接枚举矩阵的上下左右界肯定爆炸,但是发现每一个矩阵最终的分数都很小,不会超过
因此,设
同时,对
先预处理出
横着分割:
竖着分割:
状态数
对于上,左,右界相同的矩阵,最优分割点随着下界的增大而增大,所以单调性优化,不再从
此外
答案是当出现
时间复杂度
Day2D
简要题意:有
解析:设
当
把
因此,问题变成求有多少条向右上方走的折线划分
可以用二位偏序,设
需要离散化优化。
时间复杂度
Day2E CF372C Watching Fireworks is Fun
解析:先把
设
单调队列和滚动数组优化。
答案是
时间复杂度
Day3A CF220B Little Elephant and Array
解析:莫队板,卡常能过。
时间复杂度
Day3C CF575I Robots protection
解析:先把四个方向的分开处理,后面都旋转成方向一的形状。
对于一个三角形,限制的是:
画个图会发现,满足
Day3D P6847 [CEOI2019] Magic Tree / CF1193B Magic Tree
解析:设
不获得
的果汁: 。 获得
的果汁:
两者取
Day4A
简要题意:一个长度为
解析:开
但是暴力做法也能卡过,可以运用计数排序(即将每个数放到数轴上在顺次取,适合值域小的情况)卡到
Day4B
简要题意:有
解析:计算出所有长度为
对于每个数字单独考虑。当选中的区间位于两个数字中间的空白段时,则这段区间无法被这个数字贡献(不同数字的个数),若两个
所以考虑维护每种数字中间的空白段,若从
观察 若两个 1 中间长度为 3,则有 $3$ 个长度为 $1$ 的区间,$2$ 个长度为 $2$ 的区间,$1$ 个长度为 $3$ 的区间,发现区间的长度和不能被贡献的区间的个数,可以表示为一次函数
Day4C
简要题意:有一个有无限个房间的酒店,从
如果新进来一个有
询问
解析:观察到对于
第二种询问,考虑哪个团队最终会选中这个房间,直接时光倒流:
新增一个房间,等待被一个队伍选取。
若出现一个有限人数为
的队伍,则编号 的房间全部被这个队伍选取。 若出现一个无限人数的队伍,则编号为偶数的房间全部被这个队伍选取。
用一个 set 维护即可。
Day5A CF1795D Paint the Tree
解析:先让染红和染蓝走到两点的中点会合,然后以最短路径将整棵树遍历一遍即可。
Day6A
简要题意:给定一棵
解析:维护
然后考虑统计答案,设
Day6B
简要题意:有一棵
解析:分开每种权值考虑,将与当前考虑权值相同的点权设为
设
如果以
Day6C CF1111E Tree
解析:考虑深度从浅往深放。
设
自己开一组: 。 和不是自己祖先的划为一组: 。
维护它的祖先的个数,用树链剖分即可。
Day6D
简要题意:两棵树共用若干个节点,A 可以在红树上移动,B 可以在蓝树上移动。输出 B 能捉到 A 的最少步数(双方都绝顶聪明),如果 B 捉不到 A,输出
解析:
如果存在一条红边,它两端的端点在蓝树上的距离
,那只要 A 到达这条边的两端,它就可以无限瞬移。 如果某个节点,A 过去比 B 过去要慢,那 A 肯定不往那边走。
将下面那种点打上标记,如果不经过下面那种点能达到上面那种点,那么就输出
这不纯纯 dfs 模拟题了。
Day7A CF437C The Child and Toy
解析:由于一个点删
Day7B
简要题意:Alice 和 Bob 在一个有向图(点数,边数
解析:设状态
根据得分的机制,经过
首先将那些已知的可以到达
若从
所有状态均不处于集合
中,不然可以走到 的数。 对于每一个状态
, 的任意一条出边的节点 的状态 必须不处于集合 中,否则 Alice 可以沿着 前往更大的节点。 对于每一个状态
, 的任意一条出边的节点 的状态 必须处于集合 中,否则 Bob 可以沿着 使其前往更小的节点。
所以代码的实现就可以沿着上面的思路:拿出不在
Day8A
简要题意:
解析:Kosaraju 缩点跑拓扑排序 DP 即可。
Day8B
简要题意:一个机器人在一个有向图(点数,边数
解析:考虑到可以从终点反推走到这个点所需要的代价。设
令
补充:01 BFS 是一种使用双端队列处理边权只有
和 的图的最短路的算法,时间复杂度为 ,其贪心思路为:不断取出队首的点处理,若遇到边权为 的边,这种边要多走,放到队头,否则放到队尾。可以证明双端队列中的元素从队首到队尾单调递增。
给每个点统计入度,当是
后记:这样一看我也就补了一半都没有的题,菜!