luogu P5322 [BJOI2019]排兵布阵
普及dp
设\(f_{i,j}\)表示前\(i\)个城堡,用\(j\)人的最大价值,转移枚举一个对手,如果这个对手在\(i\)这个城堡人数是第\(k\)小的,那么用\(2a_i+1\)人可以得到\(ik\)的价值
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<vector>
#include<cmath>
#include<ctime>
#include<queue>
#include<map>
#include<set>
#define LL long long
#define db double
using namespace std;
const int N=20000+10,M=100+10,inf=1<<29;
int rd()
{
    int x=0,w=1;char ch=0;
    while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
    return x*w;
}
int kk,n,m,f[2][N],a[M][M];
int main()
{
    kk=rd(),n=rd(),m=rd();
    for(int j=1;j<=kk;++j)
        for(int i=1;i<=n;++i)
            a[i][j]=rd();
    memset(f,-0x3f3f3f,sizeof(f));
    int nw=1,la=0;
    f[la][0]=0;
    for(int i=1;i<=n;++i)
    {
        sort(a[i]+1,a[i]+kk+1);
        for(int j=0;j<=m;++j)
        {
            if(f[la][j]<=-inf) continue;
            f[nw][j]=max(f[nw][j],f[la][j]);
            for(int k=1;k<=kk&&j+a[i][k]*2+1<=m;++k)
                f[nw][j+a[i][k]*2+1]=max(f[nw][j+a[i][k]*2+1],f[la][j]+i*k);
            f[la][j]=-inf;
        }
        nw^=1,la^=1;
    }
    int ans=-inf;
    for(int j=0;j<=m;++j) ans=max(ans,f[la][j]);
    printf("%d\n",ans);
    return 0;
}
luogu P5322 [BJOI2019]排兵布阵的更多相关文章
- [BJOI2019]排兵布阵——分组背包
		题目链接: [BJOI2019]排兵布阵 对于每座堡垒,将$s$个对手排序,显然如果安排的兵力能打败第$i$个对手就一定能打败前$i-1$个. 那么对于第$i$座城堡,可以看做有$s+1$个物品(可以 ... 
- [BJOI2019]排兵布阵(动态规划)
		[BJOI2019]排兵布阵(动态规划) 题面 洛谷 题解 暴力dp: 设\(f[i][j]\)表示考虑到了第\(i\)座城市用了\(j\)人的最大收益,枚举在这个城市用多少人就可以了. 优化: 发现 ... 
- [BJOI2019]排兵布阵 DP
		[BJOI2019]排兵布阵 DP 比较好想的DP,设\(dp[i][j]\)表示第\(i\)个城堡时,已派出\(j\)个士兵.决策时,贪心派出恰好严格大于某一玩家派出的数量的两倍(不然浪费).我们发 ... 
- [BJOI2019] 排兵布阵
		题目 这个\(dp\)出在普及都算水题吧 直接背包,\(O(nms)\)跑不满,非常稳 #include<cstdio> #include<vector> #include&l ... 
- LuoguP5322 [BJOI2019]排兵布阵(DP)
		城为物,人为容,价值?排序后,一切都明了 #include <iostream> #include <cstdio> #include <cstring> #inc ... 
- 【LOJ】#3092. 「BJOI2019」排兵布阵
		LOJ#3092. 「BJOI2019」排兵布阵 这题就是个背包啊,感觉是\(nms\)的但是不到0.2s,发生了什么.. 就是设\(f[i]\)为选了\(i\)个人最大的代价,然后有用的人数只有\( ... 
- HDU 4539郑厂长系列故事――排兵布阵(状压DP)
		HDU 4539 郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 //#pragma co ... 
- HDU 4539                    郑厂长系列故事——排兵布阵
		http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) ... 
- 郑厂长系列故事——排兵布阵    hdu4539(状态压缩DP)
		郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ... 
随机推荐
- python3.6+selenium3.13 自动化测试项目实战一
			自己亲自写的第一个小项目,学了几天写出来的一个小模块,可能还不是很完美,但是还算可以了,初学者看看还是很有用的,代码注释不是很多,有问题可以加我QQ 281754043 一.项目介绍 目的: 测试某官 ... 
- 随机排序std::vector,扑克牌,麻将类尤其合用
			有些需要重新对std::vector对象重新排序,特别是游戏,例如说:扑克牌,麻将,抽奖等,C++标准已经为std::vector写好了随机排序的方式,这里做个笔记: #include <alg ... 
- linux 软链接的创建、删除和更新
			大家都知道,有的时候,我们为了省下空间,都会使用链接的方式来进行引用操作.同样的,在系统级别也有.在Windows系列中,我们称其为快捷方式,在Linux中我们称其为链接(基本上都差不多了,其中可能有 ... 
- 【网站公告】请大家不要发表任何涉及“得到App”的内容
			大家好,今天我们收到来自杭州某某网络科技有限公司的维权骑士团队的邮件,说他们受某某(天津)文化传播有限公司委托,展开维权.园子里有些博主因为学习“得到App”的课程在博客中记了一些笔记,也被维权. 为 ... 
- django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'. Did you install mysqlclient or MySQL-python?
			Error msg: Unhandled exception in thread started by <function check_errors.<locals>.wrapper ... 
- scala的多种集合的使用(5)之数组Array(ArrayBuffer)的操作
			1.创建和更新数组的不同方式 1)定义一个数组的初始大小和类型,随后填充值. scala> val array = new Array[String](3) array: Array[Strin ... 
- foreman容器化部署
			一.前言 最近公司要求对一批GPU服务器安装操作系统,之前同事一直采用cobbler安装系统,一旦服务器设置为pxe优先启动,会出现重复安装系统的问题,并且如果线上服务器忘记修改第一启动项为硬盘启动, ... 
- pytorch识别CIFAR10:训练ResNet-34(数据增强,准确率提升到92.6%)
			版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前一篇中的ResNet-34残差网络,经过减小卷积核训练准确率提升到85%. 这里对训练数据集做数据 ... 
- canvas学习笔记,实用知识点总结(上)
			本博客是本人日常学习笔记,作为重要知识点的总结记录,随笔风格可能更倾向于个人的学习习惯和方式,若对您有帮助十分荣幸,若存在问题欢迎互相学习探讨,前端小白一枚在此恭候. 一.基本使用规则 1.创建画布 ... 
- 了解Vue.js
			一.了解Vue (1)Vue.js在设计上采用MVVM(Model-View-ViewModel)模式 当View变化时,会自动更新到ViewModel,反之亦然.View与ViewModel通过双向 ... 
