D1T1
直接根据题意模拟即可。
D1T2
咕咕咕。
D1T3
记 (dp_{i,j,0/1}) 表示前 (i) 个课,选了 (j) 个课,第 (i) 个课换不换的最小期望。
floyd 预处理两点之间的最短路,转移显然。
D2T1
数据范围很小,考虑 (mathcal O(n^2)) 求出组合数。
求个二维前缀和就做完了。
D2T2
发现切完之后其他蚯蚓要全部加 q,不好处理,考虑变成切的蚯蚓减去 q。
假设先切长度为 (a) 的蚯蚓,那么切出来是 (lfloor pa floor) 和 (x-lfloor px floor)。
第二只切长度为 (b) 的蚯蚓,(b<a),那么 (lfloor pb floor < lfloor pa floor),(b-lfloor pb floor < a-lfloor pa floor)。
那么考虑搞三个队列,第一个存原本蚯蚓长度,第二个存 (lfloor px floor),第三个存 (x-lfloor px floor)。
那么每一秒将三个队列的队首进行比较,取出最大的,从队首扔掉,然后将切完的分别加入到第二和第三个队列队尾。
时间复杂度 (mathcal O(n+m))。
D2T3
咕咕咕