AtCoder 做题记录
AGC003D Anticube
发现不能质因数分解,谔谔。
考虑先把 \(\leq \sqrt[3]{V}\) 的质因数摘掉,对于剩下的部分有一个性质:质因数个数不超过 \(2\) 个,所以只能是 \(pq\) 或者 \(p^2\) 的形式,对于前者,不可能存在与之配对的方案。所以只需要判一下是否为完全平方数,如果是的话加入到分解中即可。
数论题的一个结论:超过 \(\sqrt[k]{x}\) 的质因数最多 \(k\) 个,而常数个质因子的情况是容易讨论的。这个结论让我们能够考虑对值域分治。
AGC002D Stamp Rally
直接整体二分。
题解还有个做法是建立 kruskal 重构树,说明 kruskal 重构树不仅能刻画瓶颈路,也能刻画某个边权限制下的连通块形态。
ARC082E ConvexScore
Analysis
歪打正着。
考虑枚举凸包最左边的点,做一个 DP。设 \(f_{i,j,k}\) 表示 \(i\) 为起点,最后一条边为 \((j,k)\) 的权值和,则每次相当于加一个三角形,转移可以三方,预处理四方。
考虑怎么预处理,瞎手玩玩出来一个条件:点在凸包内部当且仅当加入之后凸包集合不变。然后就突然想到给 \(2^{n-|S|}\) 挂一个组合意义,式子是:
发现每个点集都恰好有 \(1\) 的贡献,除了三点共线的点集,枚举每条线计算即可,复杂度三方。
Solution
最近组合意义的题见的好多啊,可以拿来化式子。
ARC102F Revenge of BBuBBBlesort!
Analysis
打表,发现不存在长度为 \(4\) 的下降子序列,交上去过了 \(85\) 个点。
Solution
Obversation 1:操作中相邻两个数不会同时进行交换操作。
Obversation 2:所有执行过操作的中心点必然满足 \(p_i=i\)。考虑其对应的一个连续段,则连续段与 \(i\) 奇偶性相同的点都被操作过。
Obversation 3:考虑一个连续段内的点,其中向左移动的点满足其单调递增,向右移动的点也满足单调递增。
这是一个充要条件。所以我们只需要判断没有匹配的点是否能被划分成两个递增子序列即可,可以判断下降子序列长度不超过 \(2\)。
Conclusion
有时候手玩能发现打表不能发现的性质。手玩不能闷头冲,操作一步之后要观察新一步的限制与结构。
ARC098F Donation
Analysis
发现对于一个状态能走到的点是一个联通块,如果捐完了当前值小于 \(a_u\) 了 \(u\) 就没了。所以如果我们考虑 \(a_u\) 比较大的点,那么第一次小于 \(a_u\) 的时刻一定满足图中只有一个联通块,相当于如果建一个重构树,那么一定做完 \(u\) 的所有其他子树再走 \(u\)。DP 一下,发现寄了。改成 \(a_u\) 为第一关键字 \(b_u\) 为第二关键字,寄了。\(b_u\) 降序排,过了。
Solution
其实限制是钱数不能超过 \(\max\{0,a_u-b_u\}\),按这个排序就对了。
ARC100F Colorful Sequences
Solution
考虑没有第一个限制,只考虑 \(a\) 在整体序列的出现次数,可以枚举 \(a\) 的出现位置然后拆开算。
考虑有第一个限制,套用上面的做法相当于拆了一个贡献。那考虑在 \(i\) 处的贡献。这个可以 DP 做。

浙公网安备 33010602011771号