题意

给定一棵高度为 \(n\) 的完全二叉树,可以将节点设置成两种状态。如果某个叶子 \(x\) 的状态为 \(i\) 同时他的某个祖先也为 \(i\),那么这个叶子就会对祖先产生 \(f_{x,i}\) 的贡献。求叶子状态为 \(0\) 的数量小于等于 \(m\) 的最大贡献。

\(\texttt{Data Range:}1\leq n\leq 10,m\leq 2^{n-1}\)

题解

考虑先设一个 \(f_{i,j}\) 表示到了 \(i\) 点,叶子选了 \(j\) 个 \(0\) 的,这个子树对祖先的总贡献,但是会发现这个东西好像做不了。

于是考虑状压。设 \(f_{i,j,S}\) 表示到了 \(i\) 点,叶子选了 \(j\) 个 \(0\),这个点的祖先的选择的状态为 \(S\) 时这个字数对祖先的总贡献。

然后这个东西就做个树形背包就好了。

实现的时候可以考虑爆搜一下,就可以压缩掉 \(S\) 这一维。

代码

#include<bits/stdc++.h>
using namespace std;
typedef int ll;
typedef long long int li;
const ll MAXN=2051;
ll n,m,sz,res;
ll u[MAXN][15],v[MAXN][15],f[MAXN][MAXN<<1];
inline ll read()
{
register ll num=0,neg=1;
register char ch=getchar();
while(!isdigit(ch)&&ch!='-')
{
ch=getchar();
}
if(ch=='-')
{
neg=-1;
ch=getchar();
}
while(isdigit(ch))
{
num=(num<<3)+(num<<1)+(ch-'0');
ch=getchar();
}
return num*neg;
}
#define ls node<<1
#define rs node<<1|1
inline void dfs(ll node,ll sz,ll st)
{
for(register int i=0;i<=sz;i++)
{
f[node][i]=0;
}
if(sz==1)
{
for(register int i=0;i<n-1;i++)
{
if(st&(1<<i))
{
f[node][1]+=u[node][i+1];
}
else
{
f[node][0]+=v[node][i+1];
}
}
return;
}
for(register int i=0;i<2;i++)
{
dfs(ls,sz>>1,st<<1|i),dfs(rs,sz>>1,st<<1|i);
for(register int j=0;j<=min(sz,m);j++)
{
for(register int k=0;k<=min(sz,m);k++)
{
f[node][j+k]=max(f[node][j+k],f[ls][j]+f[rs][k]);
}
}
}
}
int main()
{
n=read(),m=read(),sz=1<<n;
for(register int i=sz>>1;i<sz;i++)
{
for(register int j=1;j<=n-1;j++)
{
u[i][j]=read();
}
}
for(register int i=sz>>1;i<sz;i++)
{
for(register int j=1;j<=n-1;j++)
{
v[i][j]=read();
}
}
dfs(1,sz-1,0);
for(register int i=0;i<=m;i++)
{
res=max(res,f[1][i]);
}
printf("%d\n",res);
}

Luogu P3262 [JLOI2015]战争调度的更多相关文章

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

    [BZOJ4007][JLOI2015]战争调度(动态规划) 题面 BZOJ 洛谷 题解 神仙题,我是做不来. 一个想法是设\(f[i][j]\)表示当前考虑到\(i\)节点,其子树内有\(j\)个人 ...

  2. [JLOI2015]战争调度

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

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

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

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

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

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

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

  6. BZOJ4007 [JLOI2015]战争调度

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

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

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

  8. 【题解】JLOI2015战争调度

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

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

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

随机推荐

  1. layui动态添加选项卡

    <!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head> <meta ...

  2. 你在开发过程中使用Git Rebase还是Git Merge?

    摘要:在git里面经常的一个争论是到底用rebase还是用merge? 1. 痛苦吗?代码历史中的迷失羔羊 我们先来看一个真实的代码提交历史图形化截图: 图片源自 https://storage.kr ...

  3. Centos-yum软件包安装-yum

    yum 自动安装相关软件依赖,可以同时配置多个yum源,初始启动yum时候首先会缓存资源包到 /var/cache/yum目录下 yum确认 -y yum安装和卸载 install 安装,自动安装软件 ...

  4. gRPC-微服务间通信实践

    微服务间通信常见的两种方式 由于微服务架构慢慢被更多人使用后,迎面而来的问题是如何做好微服务间通信的方案.我们先分析下目前最常用的两种服务间通信方案. gRPC(rpc远程调用) 场景:A服务主动发起 ...

  5. C#入门——Console.Write()与Console.WriteLine()

    参考:https://blog.csdn.net/qujunyao/article/details/72884670 两者区别: Console.Write("abc"); 输出到 ...

  6. ::在C++中是什么意思

    转自:https://blog.csdn.net/u012547790/article/details/22727277 ::在C++中是什么意思 今天又想了一下::在C++中是什么意思: 表示作用域 ...

  7. shell-的bash内部命令变量介绍与shift等

    一:shell的bash内部命令变量介绍与shift等 1. bash内部变量     有些内部命令在目录列表时是看不见的,他们有shell本身提供,常用的内部命令有:echo,eval,exec,e ...

  8. 多测师讲解接口测试 _报错_高级讲师肖sir

  9. 多测师讲解python _函数中变量_高级讲师肖sir

    定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是 被定义为局部变量.在这种情况下,不论全局变量中是否用到该变量名,函数中 使用的都是局部变量.例如: num=100 #全局变量 ...

  10. MeteoInfoLab脚本示例:中尺度气旋散点图

    全球长时间序列中尺度气旋数据(http://cioss.coas.oregonstate.edu/eddies/)有netCDF格式,散点数据类型,只有一个很大的维Nobs = 2590938.尝试读 ...