其他分享
首页 > 其他分享> > 牛客多校第六场 J Upgrading Technology dp

牛客多校第六场 J Upgrading Technology dp

作者:互联网

题意:

有n个技能,一开始都是0级,第i个技能从j-1级升到j级,花费$c_{i,j}$,但是花费不一定是正的

所有的技能升到j级时,奖励$d_j$但是奖励也不一定是正的

题解:

用sum[i][j]储存c[i][j]的前缀和,即技能i升到j级后总共的收益。

再开一个数组maxxx[i][j]用于储存技能i至少升到j级的收益,即max(sum[i][j~m])。

然后枚举j,计算$\sum_{k=1}^jd_k+\sum_{i=1}^{n}maxxx[i][j]$即可

但这样带来一个问题,对于某个j,假如每种技能在最少升到j级的情况下,最优情况都是需要升到更高级,那么,所有的技能都升级带来的奖励d你就必须收下,即便这个d是负的。

因此,定义benefit=maxxx[i][j]-sum[i][j],代表某个技能因为升到高于j得到的额外奖励,当对于某个j,所有的技能带来的benefit都大于0,就减去那个最小的benefit,表示以最小的代价把一个技能打回j级,这样就保证了计算出来的奖励d是正确的。

标签:第六场,升到,sum,Upgrading,多校,maxxx,奖励,benefit,技能
来源: https://www.cnblogs.com/isakovsky/p/11296444.html