【BJOI2019】排兵布阵 DP
题目大意:有$n$座城堡,$s$轮游戏。
对于第$x$轮,第i座城堡的士兵数量为$a[x][i]$。
如果你需要攻下第i座城堡,你在第i座城堡部署的士兵必须严格大于$2a[x][i]$,如果攻下了你会获得$i$的收益。
对于这$s$轮游戏,你只能采用一种部署方式。
下面问你应该如何部署,使得你在这$s$轮游戏中的收益和最大。
数据范围:$n,s≤100$,$m≤2000$。
我们考虑直接$dp$,设$f[i][j]$表示前$i$个城堡部署了$j$名士兵的最大收益。
不难发现,$f[i][j]=\max\limits_{k≤j,k∈a[][i]} f[i-1][j-k]+val[i][k]$。
其中,$val[i][k]$表示你在第$i$城堡部署$k$个人的收益和。
直接$dp$就可以了,复杂度为$O(nms)$。
#include<bits/stdc++.h>
#define M 105
#define N 20005
using namespace std; int f[M][N]={},a[M][M]={},val[M][M]={};
int s,n,m; int main(){
scanf("%d%d%d",&s,&n,&m);
for(int i=;i<=s;i++)
for(int j=;j<=n;j++) scanf("%d",&a[i][j]); for(int i=;i<=n;i++){
for(int j=;j<=s;j++){
for(int k=;k<=s;k++)
if(a[j][i]>=a[k][i]) val[i][j]++;
}
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++){
f[i][j]=f[i-][j];
for(int k=;k<=s;k++)
if(j>a[k][i]*){
f[i][j]=max(f[i][j],f[i-][j-a[k][i]*-]+val[i][k]*i);
}
}
int maxn=;
for(int i=;i<=m;i++)
maxn=max(maxn,f[n][i]);
cout<<maxn<<endl;
}
【BJOI2019】排兵布阵 DP的更多相关文章
- [BJOI2019]排兵布阵 DP
[BJOI2019]排兵布阵 DP 比较好想的DP,设\(dp[i][j]\)表示第\(i\)个城堡时,已派出\(j\)个士兵.决策时,贪心派出恰好严格大于某一玩家派出的数量的两倍(不然浪费).我们发 ...
- LuoguP5322 [BJOI2019]排兵布阵(DP)
城为物,人为容,价值?排序后,一切都明了 #include <iostream> #include <cstdio> #include <cstring> #inc ...
- [BJOI2019]排兵布阵(动态规划)
[BJOI2019]排兵布阵(动态规划) 题面 洛谷 题解 暴力dp: 设\(f[i][j]\)表示考虑到了第\(i\)座城市用了\(j\)人的最大收益,枚举在这个城市用多少人就可以了. 优化: 发现 ...
- [BJOI2019]排兵布阵——分组背包
题目链接: [BJOI2019]排兵布阵 对于每座堡垒,将$s$个对手排序,显然如果安排的兵力能打败第$i$个对手就一定能打败前$i-1$个. 那么对于第$i$座城堡,可以看做有$s+1$个物品(可以 ...
- LOJ 3092 「BJOI2019」排兵布阵 ——DP
题目:https://loj.ac/problem/3092 同一个人的不同城堡之间没有什么联系,只是和<=m.所以对每个城堡的 s 个值排序,做一个 f[ i ][ j ] 表示第 i 个城堡 ...
- luogu P5322 [BJOI2019]排兵布阵
传送门 普及dp 设\(f_{i,j}\)表示前\(i\)个城堡,用\(j\)人的最大价值,转移枚举一个对手,如果这个对手在\(i\)这个城堡人数是第\(k\)小的,那么用\(2a_i+1\)人可以得 ...
- [BJOI2019] 排兵布阵
题目 这个\(dp\)出在普及都算水题吧 直接背包,\(O(nms)\)跑不满,非常稳 #include<cstdio> #include<vector> #include&l ...
- HDU 4539郑厂长系列故事――排兵布阵(状压DP)
HDU 4539 郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 //#pragma co ...
- 郑厂长系列故事——排兵布阵 hdu4539(状态压缩DP)
郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
随机推荐
- 【Django】RROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
刚刚启动项目的时候,突然报了这个错误.之前一直正常 后来百度一下,让我在window的host文件下,把被注释的127.0.0.1 localhost这个的注释取消 然鹅并木有用 直接用cmd连接 ...
- 校验金额、大小写字母、大写字母、合法uri、email
/* 合法uri*/ export function validURL(url) { const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0- ...
- JS同步与异步;
JS的同步与异步 同步:代买从上往下的执行 异步:每个模块各执行各的,同时执行,互不干扰 四个异步事件:(1)定时器(2)ajax(3)时间的绑定(4)回调函数 现在用定时器来说一说setTimeOu ...
- linux学习第九天 (Linux就该这么学)
今天讲了raid0 至少两块盘串联在一起,读写性能提升,但不具备数据备份和错误修复能力,RAID1把两块盘绑定,在写入数据时,同时写入到多块硬盘设备,raid5推荐使用,10推荐使用 LVM,今天是 ...
- tensorflow nan
https://github.com/tensorflow/tensorflow/issues/3212 NaNs usually indicate something wrong with your ...
- Django中的缓存(内存,文件,redis)
一.Django中的缓存的几种方法 1)单个视图缓存.时间测试 import time from django.views.decorators.cache import cache_page @ca ...
- 在excel中如何利用vba通过网址读取网页title(网址是https的)?
昨天在百度知道上提了这个问题,我保存了些百度知道我回答的网址,想利用excel直接读取出网址的title,请问vba代码怎么写?(要支持https的) excel大神帮我回答了,在这记录下: Func ...
- centos7 制作yum源
一.依赖 1.rsync yum install -y rsync xinetd 2.nginx,这个就不多说了 二.建立目录 mkdir -p /data/yum_source/nginx/html ...
- 秒杀系统-web
秒杀系统Web层主要涉及前端交互设计.Restful:url满足Restful设计规范.Spring MVC.bootstrap+jquery这四个方面的开发.秒杀系统的前端交互流程设计如下图6-3所 ...
- elasticsearch搜索引擎环境的搭建
elasticsearch 搜索引擎 解决了什么问题:在我们数据量很大时,我们使用模糊查询会使索引列的索引消失,这样使用elasticsearch来提高查询效率. 存在什么问题:有时我们查询的词,el ...