排兵布阵

题目链接

大致题意:

s名玩家,n座城堡,每名玩家都是m个士兵,已知该s名玩家会派a[i]士兵争夺i城堡,只有你派出的士兵严格大于其二倍,才会得到i分,求最后的最高得分


解题思路:

背包问题,具体来说是分组背包,即每组中最多选一个

刚开始可能想不到分组背包,我们如果把每座城堡的s名玩家派出士兵个数从小到大排序,我们如果排除士兵的个数大于最后一名玩家的两倍,其他的玩家就不用考虑,肯定满足大于其他玩家的两倍,此时的得分就是k*i (k是排序后第几名玩家),这样看的话,按城堡分组,每组选一个物品,对应价值就是k*i,满足分组背包

状态表示:f[i][j]表示第i个城堡,排除j名士兵得到的最大分数

我们可以去掉一维,用f[j]表示

状态转移:f[j] = max(f[j], f[j - a[i][k] * 2 - 1] + k * i)


AC代码:

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 1; i <= (n); ++i)
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;
typedef long long ll;
int s, n, m;
int a[110][110];
int f[20010];int main(void)
{cin >> s >> n >> m;for (int j = 1; j <= s; ++j)for (int i = 1; i <= n; ++i)cin >> a[i][j];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)f[j] = max(f[j], f[j - a[i][k] * 2 - 1] + k * i);int res = 0;for (int i = 0; i <= m; ++i) res = max(res, f[i]);cout << res << endl;return 0;
}

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

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

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

  2. P5322-[BJOI2019]排兵布阵【背包】

    正题 题目链接:https://www.luogu.com.cnp/problem/P1768 题目大意 nnn个城池,有sss个玩家对于每个城池有一定的兵.对于所有玩家的每个城池都有派兵一个人数,要 ...

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

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

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

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

  5. 「BJOI 2019」排兵布阵

    传送门 problem 小 C 正在玩一款排兵布阵的游戏.在游戏中有 nnn 座城堡,每局对战由两名玩家来争夺这些城堡.每名玩家有 mmm 名士兵,可以向第 iii 座城堡派遣 aia_iai​ 名士 ...

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

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

  7. P5322 [BJOI2019] 排兵布阵

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

  8. [BJOI2019]排兵布阵

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

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

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

最新文章

  1. 实用技巧:Excel中的常见问题以及解决方法
  2. Dcloud课程1 APP的架构有哪些
  3. Dataset之Rotten Tomatoes:Rotten Tomatoes影评数据集简介、下载、使用方法之详细攻略
  4. python写元旦快乐_用Python在00:00给微信好友发元旦祝福语
  5. 包装类java_java中的包装类
  6. 架构:Android 组件化开发
  7. 机器学习 测试_测试优先机器学习
  8. mysql 账户管理_Mysql账户管理原理与实现方法详解
  9. TensorFlow 教程 --进阶指南--3.2变量:创建、初始化、保存和加载
  10. 智能优化算法总结-数字孪生下的车间调度-APS预告
  11. NGN学习笔记3——软交换中的协议1--SIP、SIP-I\SIP-T\BICC
  12. 屏幕录像软件下载哪个比较好用
  13. 数据的分析的方法及评价指标总结
  14. 三种css样式应用方式,CSS样式三种形式
  15. 上海十大it外包公司
  16. 主键外键超键候选键的联系和区别_主键、外键、超键、候选键
  17. win10 添加照片查看器
  18. session 的钝化和活化
  19. python读取加密word_python的特殊文件操作——excel、PDF、word、json、csv
  20. Gas Station (环形加油站)

热门文章

  1. 使用BAT脚本实现一键配置Mysql服务器和开启远程服务
  2. HTML(超文本标记语言)
  3. 量化学习:大数据时代的学习方式
  4. 生成地球人申请表、逍遥游pdf
  5. Centos7搭建Frps服务端的教程
  6. 抖音很火的召唤神龙的小游戏完整代码-召唤神龙
  7. 如果我们能正确测本因子
  8. [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑工程计量与计价10517k1
  9. [滴滴校招] 连续最大和
  10. 计算几何(二) by邓俊辉老师