【BZOJ4007】[JLOI2015]战争调度(动态规划)

题面

BZOJ

洛谷

题解

神仙题,我是做不来。

一个想法是设\(f[i][j]\)表示当前考虑到\(i\)节点,其子树内有\(j\)个人选择了打仗的最大贡献。

但是我们发现直接做我们并不会转移,因为我们不知道每个儿子的选择情况。

那么我们直接爆搜这条链上的每个点的情况,这样子到了叶子节点就可以直接转移上去。

而这样子爆搜的条件下,显然一个点的左右两个儿子是独立的,即转移是互不影响的,所以这样子并没有问题。

那么复杂度是什么呢?

我们理解为每个叶子节点都要对应的爆搜一次所有父亲的答案,这样子复杂度就是\(O(2^{2n})\),然后对于每一个点考虑,然后对于每一种爆搜情况,还要\(O(n)\)的转移。

所以复杂度就是\(O(2^{2n}n)\)。

#include<iostream>
#include<cstdio>
using namespace std;
#define MAX 1100
inline int read()
{
int x=0;bool t=false;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=true,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return t?-x:x;
}
int w1[MAX][MAX],w2[MAX][MAX];
int n,m,f[MAX][MAX],ans;
bool vis[MAX];
void dfs(int u,int d)
{
for(int i=0;i<=(1<<d);++i)f[u][i]=0;
if(!d)
{
for(int i=1;i<=n;++i)
if(vis[i])f[u][1]+=w1[u][i];
else f[u][0]+=w2[u][i];
return;
}
vis[d]=false;dfs(u<<1,d-1);dfs(u<<1|1,d-1);
for(int i=0;i<=(1<<(d-1));++i)
for(int j=0;j<=(1<<(d-1));++j)
f[u][i+j]=max(f[u][i+j],f[u<<1][i]+f[u<<1|1][j]);
vis[d]=true;dfs(u<<1,d-1);dfs(u<<1|1,d-1);
for(int i=0;i<=(1<<(d-1));++i)
for(int j=0;j<=(1<<(d-1));++j)
f[u][i+j]=max(f[u][i+j],f[u<<1][i]+f[u<<1|1][j]);
}
int main()
{
n=read();m=read();
for(int i=0;i<(1<<(n-1));++i)
for(int j=1;j<n;++j)w1[i+(1<<(n-1))][j]=read();
for(int i=0;i<(1<<(n-1));++i)
for(int j=1;j<n;++j)w2[i+(1<<(n-1))][j]=read();
dfs(1,n-1);
for(int i=0;i<=m;++i)ans=max(ans,f[1][i]);
printf("%d\n",ans);
return 0;
}

【BZOJ4007】[JLOI2015]战争调度(动态规划)的更多相关文章

  1. [BZOJ4007][JLOI2015]战争调度(DP+主定理)

    第一眼DP,发现不可做,第二眼就只能$O(2^{1024})$暴搜了. 重新审视一下这个DP,f[x][i]表示在x的祖先已经全部染色之后,x的子树中共有i个参战平民的最大贡献. 设k为总结点数,对于 ...

  2. BZOJ4007 [JLOI2015]战争调度

    根本想不出来... 原来还是暴力出奇迹啊QAQ 无限ymymym中 /************************************************************** Pr ...

  3. [JLOI2015]战争调度

    [JLOI2015]战争调度 题目 解题报告 考试打了个枚举的暴力,骗了20= = $qsy$大佬的$DP$: 其实就是枚举= =,只不过枚举的比较强= = #include<iostream& ...

  4. 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp

    题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...

  5. 【bzoj4007】[JLOI2015]战争调度 暴力+树形dp

    Description 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有下属,这种 关系刚好组成一个 n 层的完全二叉树.公民 i 的下属是 2 * i 和 2 * i +1.最下 ...

  6. bzoj4007 & loj2111 [JLOI2015]战争调度 复杂度分析+树上背包

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4007 https://loj.ac/problem/2111 题解 同 [NOI2006]网络 ...

  7. [JLOI2015]战争调度【暴力+树形Dp】

    Online Judge:Bzoj4007,Luogu P3262 Label:暴力,树形Dp 题解 参考了这篇blog https://www.cnblogs.com/GXZlegend/p/830 ...

  8. 【题解】JLOI2015战争调度

    搜索+状压+DP. 注意到一个性质:考虑一棵以x为根的子树,在x到原树的根的路径上的点如果都已经确定了方案,那么x的左右儿子的决策就彼此独立,互不影响了.所以我们考虑状压一条路径上每一层节点的状态,求 ...

  9. 【BZOJ 4007】[JLOI2015]战争调度 DP+搜索+状压

    又是一道思路清新的小清晰. 观察题目,如果我们确定了平民或者贵族的任意一方,我们便可以贪心的求出另一方,至此20分:我们发现层数十分小,那么我们就也是状压层数,用lca转移,线性dp,至此50分(好像 ...

随机推荐

  1. Java多线程小总结

    多线程 线程与进程 线程:具有完成特定任务的一条执行路径,是CPU执行的最小单位 进程:正在执行的程序 重点:CPU在某个时间刻度上只能够执行一条原子性语句 字节最小是bit位 原子性语句:不能够再次 ...

  2. 初学Linux要掌握的命令

    echo:打印,或者直接输出指定的字符串 语法:echo (选项) (参数) 选项:/a: 发出警告声 /b: 删除前一个字符 /c: 最后不加上换行符号 /f: 换行但光标仍旧停留在原来的位置 /n ...

  3. python3 Flask -day4 自定义url转换器

    url传参可以限定参数的数据类型,例如:限定user_id数据类型为int @app.route('/user/<int:user_id>') def my_list(user_id): ...

  4. vue学习记录①(vue-cli脚手架构建项目结构)

    我们直接从vue的工程化开始入手. 在这里用git命令行搭建项目环境.(当然直接cmd命令行下也是一样的) git下载安装地址:https://www.git-scm.com/download/win ...

  5. K3实现按虚拟件/组件发料

           最近公司调度部反应了一个K3使用过程中遇到的巨大问题:公司成品BOM组成物料种类破千,绝大部分还不能拆分成组件.为了方便区分,从逻辑上把一堆堆的半成品分成了一个个虚拟件.K3生成的投料单 ...

  6. windows linux 子系统折腾记

    最近买了部新电脑,海尔n4105的一体机,好像叫s7. 放在房间里面,看看资料.因为性能孱弱,所以不敢安装太强大的软件,然后又有一颗折腾的心.所以尝试了win10自带的linux子系统. 然后在应用商 ...

  7. 好代码是管出来的——.Net Core集成测试与数据驱动测试

    软件的单元测试关注是的软件最小可执行单元是否能够正常执行,但是软件是由一个个最小执行单元组成的集合体,单元与单元之间存在着种种依赖或联系,所以在软件开发时仅仅确保最小单元的正确往往是不够的,为了保证软 ...

  8. SQL Server一致性错误修复案例总结

    今天遇到了一个关于数据库一致性错误的案例.海外工厂的一台SQL Server 2005(9.00.5069.00 Standard Edition)数据库在做DBCC CHECKDB的时候出现了一致性 ...

  9. java笔记----property文件读写

    package com.test.property; import java.io.BufferedInputStream; import java.io.File; import java.io.F ...

  10. activemq读取剩余消息队列中消息的数量

    先上原文链接: http://blog.csdn.net/bodybo/article/details/5647968  ActiveMQ在C#中的应用 ActiveMQ是个好东东,不必多说.Acti ...