洛谷 P5322 [BJOI2019]排兵布阵
P5322 [BJOI2019]排兵布阵
想法:
1、由于 s 和 n 的范围较小,应尽量围绕他们进行处理。
2、对于每个城堡,可把与每一个玩家对战的最优解设为01背包的一个物品,其花费就是这个最优解 2×\times×n+1,其价值就是在花费为最优解情况下与所有玩家对战的得分。
3、现在对于每一个城堡"背包"我们就有了 s 个物品,又因为策略唯一,所以就可以进行分组背包。
#include<bits/stdc++.h>using namespace std;const int N=1e2+10;
const int M=2*1e4+10;int s,n,v,a[N][N],f[M];vector<int> c[N],w[N];int total(int ni,int num){int retu=0;for(int i=1;i<=s;i++){if(a[ni][i]<=num) retu+=ni;}return retu;
}int main(){scanf("%d%d%d",&s,&n,&v);for(int i=1;i<=s;i++){ //注意循环顺序和 a[j][i]for(int j=1;j<=n;j++){scanf("%d",&a[j][i]);a[j][i]=a[j][i]*2+1;}}for(int i=1;i<=n;i++){for(int j=1;j<=s;j++){int sum=total(i,a[i][j]);c[i].push_back(a[i][j]);w[i].push_back(sum);}}for(int i=1;i<=n;i++){for(int j=v;j>=0;j--){for(int p=0;p<c[i].size();p++){if(c[i][p]<=j) f[j]=max(f[j],f[j-c[i][p]]+w[i][p]);}}}cout<<f[v];return 0;
}
运用排序的简化代码,但时间稍慢,亲测少十几毫秒 (其实没差) 。
#include<bits/stdc++.h>using namespace std;const int N=1e2+10;
const int M=2*1e4+10;int s,n,v,a[N][N],f[M];vector<int> c[N],w[N];int main(){scanf("%d%d%d",&s,&n,&v);for(int i=1;i<=s;i++){for(int j=1;j<=n;j++){scanf("%d",&a[j][i]);a[j][i]=a[j][i]*2+1;}}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=v;j>=0;j--){for(int p=1;p<=s;p++){if(a[i][p]>j) break; f[j]=max(f[j],f[j-a[i][p]]+i*p);}}}cout<<f[v];return 0;
}
PS:作为一名蒟蒻,对于八方神犇的合理建议都是感激不尽的儿~~
洛谷 P5322 [BJOI2019]排兵布阵相关推荐
- 洛谷P5322 [BJOI2019] 排兵布阵 题解
洛谷P5322 [BJOI2019] 排兵布阵 题解 题意:小 C 正在玩一款排兵布阵的游戏.在游戏中有 n n n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m m m 名士兵,可以向第 ...
- 洛谷P5322 [BJOI2019]排兵布阵【分组背包】
题目描述 小 C 正在玩一款排兵布阵的游戏.在游戏中有 n 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 m 名士兵,可以向第 i 座城堡派遣 a_i名士兵去争夺这个城堡,使得总士兵数不超过 ...
- 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 排兵布阵 本题主要考察对模型的转化能力. 首先要察觉两条性质: 对于一个城堡,想打败一个玩家的同时用最少的士兵,肯定是正好派出这个玩家在这个城堡派出的士兵数量的二倍加一名 ...
- P5322 [BJOI2019]排兵布阵
失踪人口回归{\color{Lavender}失踪人口回归}失踪人口回归 目录 好康的代码 思路 ... 好康的代码 #include<bits/stdc++.h> using names ...
- [BJOI2019] 排兵布阵(分组背包)
[BJOI2019] 排兵布阵 题目描述 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 ai ...
- [BJOI2019]排兵布阵
排兵布阵 题解 今天比赛上这道题好像是人均题呀. 好吧,就一个简单的,连优化都不需要的背包dp. 我们每次只需要处理在比第i个城堡的第j大的玩家大的情况,不必把所有的兵的情况都处理完. 然后就可以过了 ...
最新文章
- 运用供应链管理实现更快速、更高质量的交付
- NRPE实现对其它(远端)设备的监控
- 班级日常 | 一天一瞬间!
- 项目中的集中开发模型研究
- Git学习文档之一 学习文档-并行开发
- 硬核干货! 你的业务是否适合上链、上链有那些坑?dfuse、慢雾、MYKEY大佬为你为你指点迷津……...
- mysql特有语法_MySQL 独有SQL语法汇总(一)
- [转载]Qt之获取本机网络信息
- spring的新注解
- c语言题库-礼炮声响次数,c语言题库与答案精华版资料.doc
- python实现ks算法_Python计算KS值并绘制KS曲线
- ⅰsee是什么意思_see是什么意思
- 学计算机怎么介绍自己的产品,商品基本描述
- android 取消蓝牙配对框 实现自动配对,android 取消蓝牙配对框 实现自动配对
- jupyter不是内部或外部命令,也不是可运行程序的解决方案
- [HR规划]人力资源规划详解(zt)
- 微软推送win11 22622.575补丁!
- 华为主题 主题兑换券活动高端操作
- WebLogic-ONS configuration failed ONS 配置失败
- 微信小程序毕业设计 基于微信汽车维修保养小程序系统开题报告
热门文章
- SVA16.14并发断言翻译笔记$inferred_clock和$inferred_disable(六)
- 【C语言】BC90小乐乐算多少人被请家长(DAY 5)
- 图解Topo拓扑排序
- python画图如何调整图例位置_python图例参数
- Go在迅雷P2P连通系统中的性能优化实践-朱文
- 如何设置Sketch快捷键,Sketch提升效率的常用技巧
- 微信小程序 iOS tableview
- linux安装frps服务,Debian手动搭建frps服务端
- dojo学习日记(6)——dojo/_base/fx的 fadeOut()方法
- htmlcss,Hbuilder入门小项目——我的淘宝,相似