洛谷P5322 [BJOI2019]排兵布阵【分组背包】
题目描述
小 C 正在玩一款排兵布阵的游戏。在游戏中有 n 座城堡,每局对战由两名玩家来争夺这些城堡。每名玩家有 m 名士兵,可以向第 i 座城堡派遣 a_i名士兵去争夺这个城堡,使得总士兵数不超过 m。
如果一名玩家向第 i 座城堡派遣的士兵数严格大于对手派遣士兵数的两倍,那么这名玩家就占领了这座城堡,获得 i 分。
现在小 C 即将和其他 s 名玩家两两对战,这 s 场对决的派遣士兵方案必须相同。小 C 通过某些途径得知了其他 s 名玩家即将使用的策略,他想知道他应该使用什么策略来最大化自己的总分。
由于答案可能不唯一,你只需要输出小 C 总分的最大值。
对于 100% 的数据:1≤s≤100,1≤n≤100,1≤m≤20000,对于每名玩家 ai≥0,∑i=1nai≤m\sum\limits_{i=1}^n a_i \le mi=1∑nai≤m
题目分析
数据范围看起来很大但其实就是分组背包裸题,复杂度为O(nms)O(nms)O(nms)但常熟很小所以能过
预处理出a[i][k]表示对第i座城堡第k小的出兵数
将每个城堡看成一个组,每个组共s个物品,体积和价值分别为a[i][k]∗2+1a[i][k]*2+1a[i][k]∗2+1和k∗ik*ik∗i
const int maxN=210;
const int maxM=40010;
int s,n,m;
int a[maxN][maxN];
int dp[maxM];int main()
{s=read(); n=read(); m=read();for(int i=1;i<=s;++i)for(int j=1;j<=n;++j)a[j][i]=read();for(int i=1;i<=n;++i)sort(a[i]+1,a[i]+1+s);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+1) break;dp[j]=max(dp[j],dp[j-a[i][k]*2-1]+k*i);}int ans=0;for(int i=1;i<=m;++i)ans=max(ans,dp[i]);printf("%d",dp[m]);return 0;
}
洛谷P5322 [BJOI2019]排兵布阵【分组背包】相关推荐
- 洛谷P5322 [BJOI2019] 排兵布阵 题解
洛谷P5322 [BJOI2019] 排兵布阵 题解 题意:小 C 正在玩一款排兵布阵的游戏.在游戏中有 n n n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m m m 名士兵,可以向第 ...
- 洛谷 P5322 [BJOI2019]排兵布阵
P5322 [BJOI2019]排兵布阵 题目大意:玩游戏~~,对于 n 个城堡,有 m 个士兵可以分别派遣到这些城堡. 同时我们有 s 个对手,在每个城堡都会与每个玩家单独比拼,在第 i 个城堡与每 ...
- [BJOI2019] 排兵布阵(分组背包)
[BJOI2019] 排兵布阵 题目描述 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 ai ...
- Java 解洛谷PP5322 [BJOI2019] 排兵布阵,包含完整的分组背包状态转移方法说明,通俗易懂
01.题目及链接 题目链接:https://www.luogu.com.cn/problem/P5322 02.分组背包说明 分组背包:有k组物品,N个物品,一个容量是C的背包.每组物品有若干个,同一 ...
- 【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵
洛谷 P5020货币系统 https://www.luogu.com.cn/problem/P5020 思路是把货币从小到大排序,然后按顺序依次完全背包dp,每次dp检查i-1种面值的货币能不能凑出第 ...
- P5322 [BJOI2019] 排兵布阵
P5322 [BJOI2019] 排兵布阵 Summary: Description 小 C 正在排兵布阵.有 n n n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m m m 名士兵,可 ...
- P5322 BJOI2019 排兵布阵
P5322 BJOI2019 排兵布阵 本题主要考察对模型的转化能力. 首先要察觉两条性质: 对于一个城堡,想打败一个玩家的同时用最少的士兵,肯定是正好派出这个玩家在这个城堡派出的士兵数量的二倍加一名 ...
- 排兵布阵 (分组背包)
排兵布阵 题目链接 大致题意: s名玩家,n座城堡,每名玩家都是m个士兵,已知该s名玩家会派a[i]士兵争夺i城堡,只有你派出的士兵严格大于其二倍,才会得到i分,求最后的最高得分 解题思路: 背包问题 ...
- P5322 [BJOI2019]排兵布阵
失踪人口回归{\color{Lavender}失踪人口回归}失踪人口回归 目录 好康的代码 思路 ... 好康的代码 #include<bits/stdc++.h> using names ...
最新文章
- devenv.exe启动版本
- ThinkPHP之MVC简析
- emui华为java2p_大文件包来了!两款华为手机依然在更新,EMUI两大功能很实用
- 制作 Windows8 to Go
- python多线程编程(6): 队列同步
- c语言如何查看内置函数,C中函数内部的函数
- js模拟实现Array的Map、Every、Some、Reduce、Find方法
- Cesium为3dTile模型添加气泡框
- office 利用宏 给全文追加拼音
- 商城系统mysql数据表设计_购物商城数据库设计-商品表设计
- vim生成连续数字列
- solver参数详解
- cookiecutter笔记
- PEST分析顺丰服务需求_顺丰内外部环境分析.doc
- 基于循环神经网络的格兰杰因果网络重构
- 跟我一起学-Python爬取(酷我)
- 程序员才看得明白的面试圣经
- Python爬虫学习笔记 (2) [初级] 初识 requests + bs4 + re
- iOS7 edgesForExtendedLayout
- Python基础笔记_Day04_数据类型、math模块、random模块、string模块
热门文章
- 南京:探索实施“电子围栏”管理新模式 缓解商圈周边道路交通拥堵
- bzoj1921 [CTSC2010]珠宝商 SAM+后缀树+点分治
- 【安全知识分享】工程项目夏季、雨季、夜间、防汛施工安全培训教育(附下载)
- vue中printJS打印表格---json
- 黑客张福:互联网是黑暗的森林
- Echarts 飞线图
- Radare2 框架介绍及使用
- Origin | 数据处理 | 公式编辑栏 | F(x)栏的使用 | 数据提取 | 数据筛选及删减
- part3_模块五作业
- 浅谈sketch插件开发(三)