NOIO 题目选做

感觉 NOIO 里的厉害题还挺多的,如果退役失败的话还是要做一下

P6189

你跟我说这是入门组????那我算什么

一眼的 70pts 的 nt dp。

\(dp_{i,j}\) 前 i 个数 和为 j 的方案数。本质是个完全背包

采取根号分治的思想

\(g_{i,j}\) 表示用了 i 个大于等于 T 的数和为 j 的方案数,那么 \(g_{i,j} = g_{i-1,j-m}+g_{i,j-i}\)

前者表示拆分序列中增加一个 m,后者表示把当前拆分序列每个数都加上 1。可以发现对于任意一个子序列是可以任意组合的。所以我们最后只需要乘法原理统计答案即可。

\(\rm link\)

P6187

观察可以发现一个环可以被拆成若干部分,而每一部分相对独立。样例解释有提示了我们只需要将数字分配的尽量不平均即可。然后只需要把所有权值排个序从大到小开始贪心即可。

\(\rm link\)

P6570

随便分析一下发现一个子序列最多只有 17 个数,我们可以直接考虑一个复杂度是 \(O(3^n)\) 状压 dp。然后还真的能过,有更厉害的 \(O(n2^n)\) 的集合幂级数做法可惜我不会。

\(\rm link\)

P7473

这个题我考场上做过,但是没做出来。

考虑分析一下两个球只会在某个障碍物旁边停下来,考虑到最多只有 250 个障碍物,我们可以抽象出一个 dp 来 \(\rm dp[x,5,y,5]\) 表示第一个球在 \(x\) 号障碍物的某个方向,另一个球在 \(y\) 号障碍物的某个方向。

共计会有 \(O(n^2)\) 个状态,哦大概就是枚举终点然后做一个多源 bfs 即可非常厉害

我口胡的没有代码。

posted @ 2021-11-19 21:23  ·Iris  阅读(141)  评论(0编辑  收藏  举报