[JLOI2015]战争调度
2024-08-28 01:27:48
[JLOI2015]战争调度
题目
解题报告
考试打了个枚举的暴力,骗了20= =
$qsy$大佬的$DP$:
其实就是枚举= =,只不过枚举的比较强= =
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
inline int read(){
int sum();
char ch(getchar());
for(;ch<''||ch>'';ch=getchar());
for(;ch>=''&&ch<='';sum=sum*+(ch^),ch=getchar());
return sum;
}
typedef long long L;
int n,m,tot;
L w[][],f[][];
L dp[][];
inline void dfs(int rt,int dep,int st){
memset(dp[rt],,sizeof(dp[rt]));
if(dep==n-){
for(int i=;i<dep;++i){
if(st&(<<i))
dp[rt][]+=w[rt][i];
else
dp[rt][]+=f[rt][i];
}
return;
}
int size(<<(n-dep-));
dfs(rt<<,dep+,st);
dfs(rt<<|,dep+,st);
for(int i=;i<=(size>>);++i){
if(i>m)
break;
for(int j=;j<=(size>>);++j){
if(i+j>m)
break;
dp[rt][i+j]=max(dp[rt][i+j],dp[rt<<][i]+dp[rt<<|][j]);
}
}
dfs(rt<<,dep+,st|(<<dep));
dfs(rt<<|,dep+,st|(<<dep));
for(int i=;i<=(size>>);++i){
if(i>m)
break;
for(int j=;j<=(size>>);++j){
if(i+j>m)
break;
dp[rt][i+j]=max(dp[rt][i+j],dp[rt<<][i]+dp[rt<<|][j]);
}
}
}
int main(){
n=read(),m=read(),tot=(<<n)-;
for(int i=;i<=(<<(n-));++i)
for(int j=n-;j>=;--j)
w[(<<(n-))+i-][j]=read();
for(int i=;i<=(<<(n-));++i)
for(int j=n-;j>=;--j)
f[(<<(n-))+i-][j]=read();
dfs(,,);
L ans();
for(int i=;i<=m;++i)
ans=max(ans,dp[][i]);
printf("%lld",ans);
}
最新文章
- CentOS 7 安装 配置 MySQL
- BZOJ4590——[Shoi2015]自动刷题机
- sql语句查询最近七天 三十天 数据
- android 数据下载 工具类
- jQ1.5源码注释以及解读RE
- EDI - Biztalk Setting
- 20145320 《Java程序设计》第2周学习总结
- 使用SharePoint CSOM 编写高效的程序
- 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit 第 2 部分: UpStart 第 3 部分: Systemd
- keil 编译的一些错误
- 07socket编程
- in_array函数的第三个参数 strict
- table表格中加入<;a>;标签,使内容上下居中的方法。
- SqlBulkCopy类进行大数据(一万条以上)插入测试
- vue-devtools(vue 2.0)手动安装与使用 ? 如何处理Vue.js is detected on this page ?
- springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置
- Android的WebView调试工具(无需Fan墙,可同时调试多个设备,永不过期)
- python实现linux下文件遍历
- Java XML DOM解析范例源码
- Django学习笔记(进阶篇)