洛谷P5322 [BJOI2019] 排兵布阵
题目大意
有s名对手,n座城堡,你有m名士兵
如果一名玩家向第
求最大得分
数据范围
对于
对于
对于
对于另外
对于
对于每名玩家
题解
不难想到用背包的方法去解决这道题
设第
对于每座城堡的代价,一定是
如果派出兵力大于了
对于
#include<bits/stdc++.h>
using namespace std;
int s,n,m,dp[20010],ans,a[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",&a[j][i]);
for(int i = 1;i<=n;i++)
sort(a[i]+1,a[i]+s+1);
for(int i = 1;i<=n;i++)
for(int j = m;j>=0;j--)
for(int k = 1;k<=s;k++)
if(j>a[i][k]*2)
dp[j] = max(dp[j],dp[j-a[i][k]*2-1]+i*k);
for(int i = 0;i<=m;i++) ans = max(ans,dp[i]);
printf("%d",ans);
return 0;
}
梦与现实间挣扎着,所求为何
你可以借走我的文章,但你借不走我的智慧 虽然我是傻逼本文来自博客园,作者:cztq,转载请注明原文链接:https://www.cnblogs.com/cztq/p/17471520.html