NOIP 2016 简要题解

D1T1

直接根据题意模拟即可。

代码

D1T2

咕咕咕。

D1T3

\(dp_{i,j,0/1}\) 表示前 \(i\) 个课,选了 \(j\) 个课,第 \(i\) 个课换不换的最小期望。

floyd 预处理两点之间的最短路,转移显然。

代码

D2T1

数据范围很小,考虑 \(\mathcal O(n^2)\) 求出组合数。

求个二维前缀和就做完了。

代码

D2T2

发现切完之后其他蚯蚓要全部加 q,不好处理,考虑变成切的蚯蚓减去 q。

假设先切长度为 \(a\) 的蚯蚓,那么切出来是 \(\lfloor pa \rfloor\)\(x-\lfloor px \rfloor\)

第二只切长度为 \(b\) 的蚯蚓,\(b<a\),那么 \(\lfloor pb \rfloor < \lfloor pa \rfloor\)\(b-\lfloor pb \rfloor < a-\lfloor pa \rfloor\)

那么考虑搞三个队列,第一个存原本蚯蚓长度,第二个存 \(\lfloor px \rfloor\),第三个存 \(x-\lfloor px \rfloor\)

那么每一秒将三个队列的队首进行比较,取出最大的,从队首扔掉,然后将切完的分别加入到第二和第三个队列队尾。

时间复杂度 \(\mathcal O(n+m)\)

代码

D2T3

咕咕咕

posted @ 2021-10-03 15:42  Nylch  阅读(28)  评论(0编辑  收藏  举报