[BJOI2019] 排兵布阵

题目描述

小 C 正在玩一款排兵布阵的游戏。在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡。每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 aia_iai​ 名士兵去争夺这个城堡,使得总士兵数不超过 mmm。

如果一名玩家向第 iii 座城堡派遣的士兵数严格大于对手派遣士兵数的两倍,那么这名玩家就占领了这座城堡,获得 iii 分。

现在小 C 即将和其他 sss 名玩家两两对战,这 sss 场对决的派遣士兵方案必须相同。小 C 通过某些途径得知了其他 sss 名玩家即将使用的策略,他想知道他应该使用什么策略来最大化自己的总分。

由于答案可能不唯一,你只需要输出小 C 总分的最大值。

输入格式

输入第一行包含三个正整数 s,n,ms,n,ms,n,m,分别表示除了小 C 以外的玩家人数、城堡数和每名玩家拥有的士兵数。

接下来 sss 行,每行 nnn 个非负整数,表示一名玩家的策略,其中第 iii 个数 aia_iai​ 表示这名玩家向第 iii 座城堡派遣的士兵数。

输出格式

输出一行一个非负整数,表示小 C 获得的最大得分。

样例 #1

样例输入 #1

1 3 10
2 2 6

样例输出 #1

3

样例 #2

样例输入 #2

2 3 10
2 2 6
0 0 0

样例输出 #2

8

提示

样例1解释:
小 C 的最佳策略为向第 111 座城堡和第 222 座城堡各派遣 555 名士兵。

数据范围:*

对于 100%100\%100% 的数据:
1≤s≤1001\le s \le 1001≤s≤100
1≤n≤1001\le n \le 1001≤n≤100
1≤m≤200001\le m \le 200001≤m≤20000
对于每名玩家 ai≥0a_i \ge 0ai​≥0,∑i=1nai≤m\sum\limits_{i=1}^n a_i \le mi=1∑n​ai​≤m


学会了分组背包的一些细节。

对于分组背包板子。

先循环物品,体积,最后是分组决策。

for(int i=0;i<n;i++){for(int j=m;j>=0;j--){ // 要有j>=0for(int k=0;k<s[i];k++){    //for(int k=s[i];k>=1;k--)也可以if(j>=v[i][k])     f[j]=max(f[j],f[j-v[i][k]]+w[i][k]);  }}
}

同理,城堡,体积,分组;一开始我循环顺序错了,就一直不对。

fo(j,1,n){for(int k=m;k>=0;k--){fo(i,1,s){if(k-2*a[j][i]-1>=0)f[k] = max(f[k],f[k-2*a[j][i]-1]+i*j);}}
}
int s,n,m;
int f[20010];//恰好使用m的最大值
/*
这 s 场对决的派遣士兵方案必须相同。
*/
void solve(){cin>>s>>n>>m;vector<vector<int>>a(n+1,vector<int>(s+1));fo(i,1,s){fo(j,1,n){cin>>a[j][i];}}fo(i,1,n){sort(all(a[i]));}fo(j,1,n){for(int k=m;k>=0;k--){fo(i,1,s){if(k-2*a[j][i]-1>=0)f[k] = max(f[k],f[k-2*a[j][i]-1]+i*j);}}}   // 错误的枚举方式// fo(j,1,n){// fo(i,1,s){// for(int k=m;k>=0;k--){// if(k-2*a[j][i]-1>=0)// f[k] = max(f[k],f[k-2*a[j][i]-1]+i*j);// }// }// }cout<<f[m]<<endl;
}int main(){solve();return 0;
}

还有一个可能画蛇添足的问题:总士兵数不超过 m , 所以状态定义是不超过,不能是恰好等于。

[BJOI2019] 排兵布阵(分组背包)相关推荐

  1. 排兵布阵 (分组背包)

    排兵布阵 题目链接 大致题意: s名玩家,n座城堡,每名玩家都是m个士兵,已知该s名玩家会派a[i]士兵争夺i城堡,只有你派出的士兵严格大于其二倍,才会得到i分,求最后的最高得分 解题思路: 背包问题 ...

  2. 【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵

    洛谷 P5020货币系统 https://www.luogu.com.cn/problem/P5020 思路是把货币从小到大排序,然后按顺序依次完全背包dp,每次dp检查i-1种面值的货币能不能凑出第 ...

  3. 洛谷 P5322 [BJOI2019]排兵布阵

    P5322 [BJOI2019]排兵布阵 题目大意:玩游戏~~,对于 n 个城堡,有 m 个士兵可以分别派遣到这些城堡. 同时我们有 s 个对手,在每个城堡都会与每个玩家单独比拼,在第 i 个城堡与每 ...

  4. P5322 [BJOI2019] 排兵布阵

    P5322 [BJOI2019] 排兵布阵 Summary: Description 小 C 正在排兵布阵.有 n n n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m m m 名士兵,可 ...

  5. 洛谷P5322 [BJOI2019] 排兵布阵 题解

    洛谷P5322 [BJOI2019] 排兵布阵 题解 题意:小 C 正在玩一款排兵布阵的游戏.在游戏中有 n n n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m m m 名士兵,可以向第 ...

  6. P5322 BJOI2019 排兵布阵

    P5322 BJOI2019 排兵布阵 本题主要考察对模型的转化能力. 首先要察觉两条性质: 对于一个城堡,想打败一个玩家的同时用最少的士兵,肯定是正好派出这个玩家在这个城堡派出的士兵数量的二倍加一名 ...

  7. 洛谷P5322 [BJOI2019]排兵布阵【分组背包】

    题目描述 小 C 正在玩一款排兵布阵的游戏.在游戏中有 n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m 名士兵,可以向第 i 座城堡派遣 a_i名士兵去争夺这个城堡,使得总士兵数不超过 ...

  8. [BJOI2019]排兵布阵

    排兵布阵 题解 今天比赛上这道题好像是人均题呀. 好吧,就一个简单的,连优化都不需要的背包dp. 我们每次只需要处理在比第i个城堡的第j大的玩家大的情况,不必把所有的兵的情况都处理完. 然后就可以过了 ...

  9. Java 解洛谷PP5322 [BJOI2019] 排兵布阵,包含完整的分组背包状态转移方法说明,通俗易懂

    01.题目及链接 题目链接:https://www.luogu.com.cn/problem/P5322 02.分组背包说明 分组背包:有k组物品,N个物品,一个容量是C的背包.每组物品有若干个,同一 ...

最新文章

  1. Mapped Statements collection does not contain value for TaskMapper.selectByPrimaryKey
  2. jQuery用于请求服务器的函数
  3. PHP把下划线分隔命名的字符串 转换成驼峰式命名方式
  4. 使用Aspose.Cell控件实现Excel高难度报表的生成(三)
  5. rancher k8s docker 关系_【环境搭建】Ubuntu20.04通过rke部署K8S
  6. 【Java24】健康项目:环境搭建,预约管理(检查项和检查组管理)
  7. [置顶] CopyU!v2插件合集 [2013年7月18日更新]
  8. onnx 测试_ONNX 现场演示教程
  9. 怎样修改iis 服务器日期,怎么在IIS里设置服务器端缓存时间?
  10. [转]常见的用户密码加密方式以及破解方法
  11. ReactHooks+Antd Checkbox Group多选框组单独禁用其中选项
  12. 自己动手实现一个简单的 IOC,牛皮!!
  13. vue 生成二维码(中间logo),下载二维码,复制链接(vue + vue-qr+clipboard)
  14. ipad 邮箱服务器端口,ipad邮箱设置,牛排,YAHOO邮箱(后缀为yahoo
  15. 如何看apk支持的最低Android版本,目标Android版本?
  16. 无向简单图怎么判断_简单图的判定
  17. 用于传感器互操作性问题的指纹匹配系统的大规模研究
  18. Android TextView带背景图片和自定义边框
  19. MongoDB——文档操作(更新文档)
  20. MIPS-单周期CPU设计

热门文章

  1. android 9.0 SystemUI导航栏添加虚拟按键功能(三)
  2. Criterion和Criteria
  3. STM32串口屏学习
  4. 启动定时器t0的工作指令是_80c51单片机定时器t0工作于方式1定时时间1ms当晶振为6mhz时求计数初值为多少...
  5. 这两款好用的识别图片文字的软件app值得你们收藏
  6. 淘宝客微信html5,微信H5支付配置
  7. 使用VS2019配置EDK2安装教程
  8. POJ 1359 Spacecraft Malfunction G++
  9. 支付宝 手机页面支付 集成 出现 “系统繁忙,请稍后再试”
  10. 宏观经济学-大题资源整理