29

https://www.luogu.com.cn/problem/P8494

考虑可以用 \(O(n)\) 次操作求出颜色数量。具体地,依次尝试加入数,如果加入后的 query 结果 \(>1\) 就把这个数删掉,否则 cnt++

二分答案,check 是否每个颜色的出现次数都 \(\ge k\)。类似上面的做法,依次加入,如果 query 结果 \(>k\) 就删掉。最后如果机器内的数量 \(\ge cnt\times k\) 就对。

这样的操作次数是 \(O(n\log n)\) 的,无法通过。但是注意到不同的 check 过程中进行了很多的重复运算。具体地,如果一次 check 的结果是 1,那么当前机器内的数永远都会在机器内;否则,当前不在机器内的数永远都不会在机器内。这样的话,一次 check 过后期望会确定 \(\frac{1}{2}\) 的数的状态,然后就对了。

https://www.luogu.com.cn/problem/CF1874E

前面的部分很简单,但是我不会 \(O(n^2)\) 插值,被翻盘了!

考虑把 \(1\cdots n\) 的点值求出来,然后这个多项式长成这个样子:

\[F(x)=\sum\limits_{i=1}^ns_i\prod_{j\not=i}\dfrac{x-j}{i-j} \]

\(\prod\frac{1}{i-j}\) 提出来放到 \(s_i\) 里面,变成

\[F(x)=\sum\limits_{i=1}^ns_i\prod_{j\not=i}(x-j)=\sum\limits_{i=1}^ns_i\dfrac{\prod(x-j)}{x-i} \]

\(G(x)=\prod(x-j)\) 求出来,然后直接做!

https://www.luogu.com.cn/problem/P8428

赛时对着这题自闭。其实不是难的题。

有一个贪心策略:每次选择最深的羊,再选择一个尽可能浅的点看管这只羊。正确性是显然的。

考虑怎么加速这个过程。注意到看管关系可以这么刻画:设 \(d_i\) 表示 \(i\) 这个点到最近的羊的距离,对于树上相邻两点 \(u,v\),如果 \(d_u=d_v+1\),就从 \(u\)\(v\) 连一条边。那么点 \(x\) 可以看管 \(y\),当且仅当 \(x\) 可达 \(y\)

这样的话,当我们要选择一个点去看管 \(x\) 时,只需暴力跳父亲找到最浅的可行点,然后从这个点暴力 dfs 去标记所有能被看管的点。每个点至多被 dfs 到一次。于是复杂度 \(O(k\log k+n)\)

https://www.luogu.com.cn/problem/P9676

感觉这题有点猎奇。

首先可以在每个任务第一次开始做之后忽略熟练度不小于 \(0\) 的限制,因为否则一定不优。

考虑朴素的 dp,设 \(dp_{x,i,j,k}\) 表示当前在第 \(x\) 天,三个任务距离上一次做的时间分别已经过去了 \(i,j,k\) 天。注意到 \(i,j,k\) 中至少有一个 \(0\),所以复杂度是 \(O(n^3)\) 的。转移可以 \(O(1)\)

结论:\(i,j,k\) 不超过 \(O(\sqrt{\max a_i})\)。否则可以调整。

于是状态数变成了 \(O(n\max a_i)\)

https://www.luogu.com.cn/problem/CF1893D

结论:设 \(c_i\) 为颜色 \(i\) 的出现次数。将 \(c\) 从大到小排序后,字典序越小的 \(c\) 越能有解。

所以直接贪,每次放一个当前能放的 \(c\) 最大的颜色。

https://www.luogu.com.cn/problem/AT_agc036_d

好牛啊!

一个图没有负环,等价于其对应的差分约束方程有解。然后对着 \(n\) 个变量做 dp 即可。

posted @ 2025-09-17 10:26  Egg_eating_master  阅读(20)  评论(0)    收藏  举报