BJOI2019排兵布阵

Posted fast-bird

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BJOI2019排兵布阵相关的知识,希望对你有一定的参考价值。

二维背包,不是很难。

看第二个样例时想到,既然吃掉了每一个城堡的某一个人的分,那么所有比那个人派遣兵力小的都可以吃掉,所以就想到了用一维存城堡,二维存第几个玩家的兵力。
所以输入就是a[j][i];输完之后为了便于比较有多少个玩家派遣的兵力小于目前吃掉的,就要排一个序,因为兵力会比较多,所以答案的第二维就要开大一点,开小了居然是WA,不是RE。

#include<bits/stdc++.h>
using namespace std;
int s,n,m;
int ans[200][20050],lisa[110][110];
int main() 
    scanf("%d%d%d",&s,&n,&m);
    for(int i=1; i<=s; i++)
        for(int j=1; j<=n; j++) 
            scanf("%d",&lisa[j][i]);
        
    for(int i=1; i<=n; i++)
        sort(lisa[i]+1,lisa[i]+1+s);//排序处理。 
    for(int k=1; k<=n; k++)
        for(int j=m; j>=0; j--) 
            ans[k][j]=max(ans[k][j],ans[k-1][j]);//和上一个比较 
            for(int i=1; i<=s; i++) 
                if(j>lisa[k][i]*2) 
                    ans[k][j]=max(ans[k][j],ans[k-1][j-lisa[k][i]*2-1]+k*i);//严格大于2倍,i*k,k就是前面可以吃掉的玩家。 
                
            
        
    printf("%d",ans[n][m]);

以上是关于BJOI2019排兵布阵的主要内容,如果未能解决你的问题,请参考以下文章

BJOI2019排兵布阵

LuoguP5322 [BJOI2019]排兵布阵(DP)

BJOI2019排兵布阵 DP

[BJOI2019]总结

「BJOI2019」奥术神杖

[BJOI2019]奥术神杖