[USACO19OPEN]Snakes

题面:

传说,数千年前圣帕特里克消灭了哞尔兰所有的蛇。然而,蛇们现在卷土重来了!圣帕特里克节是在每年的3月17日,所以Bessie要用彻底清除哞尔兰所有的蛇来纪念圣帕特里克。

Bessie装备了一个捕网,用来捕捉 NN 组排成一行的蛇( 1 \leq N \leq 4001N400 )。Bessie必须按照这些组在这一行中出现的顺序捕捉每一组的所有蛇。每当Bessie抓完一组蛇之后,她就会将蛇放在笼子里,然后带着空的捕网开始捕捉下一组。

一个大小为 ss 的捕网意味着Bessie可以抓住任意包含 gg 条的一组蛇,其中 g \leq sgs 。然而,每当Bessie用大小为 ss 的捕网抓住了一组 gg 条蛇,就意味着浪费了 s-gsg 的空间。Bessie可以任意设定捕网的初始大小,并且她可以改变 KK 次捕网大小( 1 \leq K<N1K<N )。

请告诉Bessie她捕捉完所有组的蛇之后可以达到的总浪费空间的最小值。

显然是DP......

然而考场写了个假算法,$O(n^3*m)$的DP,而且毒瘤出题人并没有具体的数据范围,只给了一个n<=400...

考场上$O(n^3*m)$的算法拿了48pts;

由于常数的问题是所有打部分分的人里面得分最高的;

然而出考场用了毒瘤方法卡常后拿了70+pts(在Luogu上甚至拿了80pts)

先贴个假算法:

令$f[i][j][k]$表示当前在抓第$i$堆蛇,从$i$开始到$i+j-1$堆蛇都用一种背包大小抓,已经用了k个蛇袋子;

显然这里要用$[i,i+j-1]$中的最大值来抓这个区间内所有的蛇;

不难得到转移方程:$$f[i][j][k]=min{f[p][i-p][k-1]}+Max(i,i+j-1)*j-(sum[i+j-1]-sum[i-1])$$

其中$Max(l,r)$表示区间$[l,r]$中$a[]$的最大值,$sum[i]$为$a[]$的前缀和

猜你喜欢

转载自www.cnblogs.com/zhenglw/p/11508869.html