题目描述

小 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∑n​ai​≤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]排兵布阵【分组背包】相关推荐

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

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

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

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

  3. [BJOI2019] 排兵布阵(分组背包)

    [BJOI2019] 排兵布阵 题目描述 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 ai ...

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

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

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

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

  6. P5322 [BJOI2019] 排兵布阵

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

  7. P5322 BJOI2019 排兵布阵

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

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

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

  9. P5322 [BJOI2019]排兵布阵

    失踪人口回归{\color{Lavender}失踪人口回归}失踪人口回归 目录 好康的代码 思路 ... 好康的代码 #include<bits/stdc++.h> using names ...

最新文章

  1. devenv.exe启动版本
  2. ThinkPHP之MVC简析
  3. emui华为java2p_大文件包来了!两款华为手机依然在更新,EMUI两大功能很实用
  4. 制作 Windows8   to Go
  5. python多线程编程(6): 队列同步
  6. c语言如何查看内置函数,C中函数内部的函数
  7. js模拟实现Array的Map、Every、Some、Reduce、Find方法
  8. Cesium为3dTile模型添加气泡框
  9. office 利用宏 给全文追加拼音
  10. 商城系统mysql数据表设计_购物商城数据库设计-商品表设计
  11. vim生成连续数字列
  12. solver参数详解
  13. cookiecutter笔记
  14. PEST分析顺丰服务需求_顺丰内外部环境分析.doc
  15. 基于循环神经网络的格兰杰因果网络重构
  16. 跟我一起学-Python爬取(酷我)
  17. 程序员才看得明白的面试圣经
  18. Python爬虫学习笔记 (2) [初级] 初识 requests + bs4 + re
  19. iOS7 edgesForExtendedLayout
  20. Python基础笔记_Day04_数据类型、math模块、random模块、string模块

热门文章

  1. 南京:探索实施“电子围栏”管理新模式 缓解商圈周边道路交通拥堵
  2. bzoj1921 [CTSC2010]珠宝商 SAM+后缀树+点分治
  3. 【安全知识分享】工程项目夏季、雨季、夜间、防汛施工安全培训教育(附下载)
  4. vue中printJS打印表格---json
  5. 黑客张福:互联网是黑暗的森林
  6. Echarts 飞线图
  7. Radare2 框架介绍及使用
  8. Origin | 数据处理 | 公式编辑栏 | F(x)栏的使用 | 数据提取 | 数据筛选及删减
  9. part3_模块五作业
  10. 浅谈sketch插件开发(三)