简要题意

有一棵不超过十层的满二叉树,需要对每个节点进行染色。每个叶子节点会对其颜色相同的祖先节点产生贡献且黑白贡献不同。求最大贡献。

题解

首先我会暴力!我如果直接暴力枚举每个节点的颜色,复杂度就是 \(O(2^{2^n})\)。然后还要算贡献,所以还有一个 \(O(2^{n-1}(n-1))\)。然后肯定爆了。

不用说都知道是因为我们在枚举的时候重复枚举了很多相同的状态,这时我们应该单独考虑贡献。对于一个点,它的贡献应该只与其祖先节点有关,而我们暴力是去枚举了其他无关的节点。所以我们就可以设计一个 \(f_{u,S}\) 表示当前考虑到 \(u\) 节点,\(u\) 的祖先状态为 \(S\) 时子树最大贡献。然后题目中还有对黑点的个数限制,所以我们还需要加一维表示子树内黑点个数。所以最终状态是 \(f_{u,S,cnt}\) 表示 \(u\) 的子树内,其祖先染色状态为 \(S\) 且子树内有 \(cnt\) 个黑点时最大贡献。然后对于任意节点,假设它在第 \(x\) 层,则它的祖先结点状态数为 \(2^{x-1}\),子树大小为 \(2^{n-x+1}-1\),所以时间复杂度为 \(O(n\times2^n)\)。但是空间是 \(O(n\times2^{2n})\),所以我们就在搜索状态的过程中记录一个状态 \(S\),数组就只用开二维。

转移其实就是合并两个子树的信息,所以直接预处理出叶子节点的答案,然后跑一遍 \(dfs\) 然后类似合并背包一样做即可。

代码

inline void upd(int &x, int y){x = x > y ? x : y;}

void dfs(int u, int sta, int dep){
if(dep == n)return(void)(f[u][0] = c[u - lim][sta][0], f[u][1] = c[u - lim][sta][1]);
for(int i = 0; i <= qp[dep]; ++i)f[ls][i] = f[rs][i] = 0;
dfs(ls, sta, dep + 1); dfs(rs, sta, dep + 1);
for(int i = 0; i <= qp[dep]; ++i)for(int j = 0; j <= qp[dep]; ++j)upd(f[u][i + j], f[ls][i] + f[rs][j]);
for(int i = 0; i <= qp[dep]; ++i)f[ls][i] = f[rs][i] = 0;
dfs(ls, sta + qp[dep], dep + 1), dfs(rs, sta + qp[dep], dep + 1);
for(int i = 0; i <= qp[dep]; ++i)for(int j = 0; j <= qp[dep]; ++j)upd(f[u][i + j], f[ls][i] + f[rs][j]);
}
signed main(){
n = rd(), m = rd(); lim = 1 << n - 1;
for(int i = 0; i < lim; ++i)for(int j = 0; j < n - 1; ++j)v[i][j][1] = rd();
for(int i = 0; i < lim; ++i)for(int j = 0; j < n - 1; ++j)v[i][j][0] = rd();
qp[n - 1] = 1; for(int i = n - 2; ~ i; --i)qp[i] = qp[i + 1] << 1;
for(int i = 0; i < lim; ++i)for(int j = 0; j < lim; ++j)
for(int k = 0, bit = i; k < n - 1; ++k, bit >>= 1)c[j][i][bit & 1] += v[j][k][bit & 1];
dfs(1, 0, 1); int ans = 0;
for(int i = 0; i <= m; ++i)upd(ans, f[1][i]);
wt(ans);
}

luogu-P3262题解的更多相关文章

  1. Luogu P1993 题解

    p1993 小康的农场 CSP_S 1=之后就没怎么写题解.. 推荐博客食用 预备知识 明显这是一道差分约束的题,以下简称差分 有些人可能不了解差分,请点 [传送门] 至于用差分做的题的特征,无一都是 ...

  2. Luogu P3262 [JLOI2015]战争调度

    题意 给定一棵高度为 \(n\) 的完全二叉树,可以将节点设置成两种状态.如果某个叶子 \(x\) 的状态为 \(i\) 同时他的某个祖先也为 \(i\),那么这个叶子就会对祖先产生 \(f_{x,i ...

  3. luogu 3426题解 (KMP)

    题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段作为模版. 然后将模版重复喷涂到相应的位置后就得到了他想要的字符序列.一个字符可以被喷涂很多次,但是一个位置 ...

  4. Luogu P4643 【模板】动态dp

    题目链接 Luogu P4643 题解 猫锟在WC2018讲的黑科技--动态DP,就是一个画风正常的DP问题再加上一个动态修改操作,就像这道题一样.(这道题也是PPT中的例题) 动态DP的一个套路是把 ...

  5. [题解向] CF#Global Round 1の题解(A $\to$ G)

    这里是总链接\(Link\). \(A\) 题意:求\(\sum_{i=1}^{k} a_i\times b^{k-i}\)的奇偶性, \(k = \Theta(n \log n)\) --其实很容易 ...

  6. [luogu]P1053 篝火晚会[数学][群论]

    [luogu]P1053 篝火晚会 题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同 ...

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

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

  8. luoguP1379 八数码难题[启发式搜索]

    题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了 ...

  9. 「HNOI 2019」白兔之舞

    一道清真的数论题 LOJ #3058 Luogu P5293 题解 考虑$ n=1$的时候怎么做 设$ s$为转移的方案数 设答案多项式为$\sum\limits_{i=0}^L (sx)^i\bin ...

  10. [HNOI2003]消防局的设立 树形dp // 贪心

    https://www.luogu.org/problemnew/show/P2279 一开始就想到了贪心的方法,不过一直觉得不能证明. 贪心的考虑是在深度从深到浅遍历每个结点的过程中,对于每个没有覆 ...

随机推荐

  1. CoFile 企业云盘大焕新啦!

    一.域名升级,更好记 俗话说的好,好记性不如字数少 cofile.net 指尖一敲,快乐来到 别拦着我,我就要用 CoFile 企业云盘 二.架构优化,不止更快 底层优化,加载提速,更快响应,加倍安全 ...

  2. Spring Security并结合JWT实现用户认证(Authentication) 和用户授权(Authorization)

    引言在Web应用开发中,安全一直是非常重要的一个方面.Spring Security基于Spring 框架,提供了一套Web应用安全性的完整解决方案. JwT (JSON Web Token) 是当前 ...

  3. Netty中ByteBuf内存泄露及释放解析

    近日在使用Netty框架开发程序中出现了内存泄露的问题,百度加调试了一番,做个整理. 直接看解决方法请移步Netty内存泄漏解决ERROR io.netty.util.ResourceLeakDete ...

  4. IM开发者的零基础通信技术入门(十三):为什么手机信号差?一文即懂!

    [来源申明]本文引用了微信公众号"网优雇佣军"的<是谁偷走了我家的手机信号?>文章内容.为了更好的内容呈现,下文在引用和收录时内容有改动,转载时请注明原文来源信息,尊重 ...

  5. VSTO踩坑记录(2)- 运用outlook对象模型发送邮件

    概述 上篇文章记录了怎么样让vsto插件显示在功能区上面,这篇文章来说说怎么运用微软提供的对象方法对outlook进行操作,附上官方文档. 这次示例我们来用代码发一封邮件,先简单拉几个控件,分别代表要 ...

  6. Harbor 共享后端高可用

    1. 主机配置 主机地址 主机配置 主机角色 软件版本 192.168.1.60 CPU:4C MEM:4GB Disk: 100GB Harbor+Keepalived Harbor 2.1.3 K ...

  7. Wfurent 语语法概述

    \[\textit{Litar!} \newcommand{\wd}[2]{\texttt{#1}^{#2}} \] 让神明白   文字产生于史前的祭祀,史前的人们改造了原始的语言规则,使得句子拥有& ...

  8. abp.vNext mvc版中的js和css

    在创建vNextmvc版本后运行起来,F12可以看到如下js.css请求 这些文件来源: XXXX.Web/libs文件夹 /libs/abp/aspnetcore-mvc-ui-theme-shar ...

  9. ElasticSearch(1)---Logstash同步Mysql数据到ElasticSearch

    1. 单机部署-场景描述 elasticsearch只用过,没有部署或者维护过,从头完整走一遍,记录下,原创实战,有需要的朋友参考下. 2 . 解决方案 特别说下,以前win7下安装的3台虚拟机,没有 ...

  10. WebSocket,IsWebSocketRequest与AspNetWebSocketContext

    asp.net新建一个服务端程序,用来处理链接服务端: 1,新建一个处理程序 .ashx using System; using System.Collections.Generic; using S ...