\(\mathcal{Description}\)

  Link.

  给定一棵 \(n\) 层的完全二叉树,你把每个结点染成黑色或白色,满足黑色叶子个数不超过 \(m\)。对于一个叶子 \(u\),若其 \(k\) 级父亲与其同为黑色,则对答案贡献 \(a_{uk}\);若同为白色,则对答案贡献 \(b_{uk}\)。求最大贡献和。

  \(n\le10\)。

\(\mathcal{Solution}\)

  想要 DP,比如令 \(f(u,i)\) 表示 \(u\) 子树内有 \(i\) 个叶子为黑色时的最大贡献和。但发现这根本没法转移 qwq。

  那……爆搜呢?

  从上往下搜索,直接钦定当前非叶结点是黑是白,搜到叶子时,在向上计算当前叶子是黑色/白色时的贡献,回溯时简单背包。复杂度 \(\mathcal O(n4^n)\),可过欸!

\(\mathcal{Code}\)

/* Clearink */

#include <cstdio>

const int MAXN = 10;
int n, m, a[1 << MAXN | 5][MAXN + 5], b[1 << MAXN | 5][MAXN + 5];
int f[1 << MAXN | 5][1 << MAXN | 5];
bool fight[1 << MAXN | 5]; inline void chkmax ( int& a, const int b ) { a < b && ( a = b, 0 ); } inline void solve ( const int u, const int d ) {
for ( int i = 0; i <= 1 << d; ++ i ) f[u][i] = 0;
if ( !d ) {
for ( int i = 1; i <= n; ++ i ) {
if ( fight[u >> i] ) f[u][1] += a[u][i];
else f[u][0] += b[u][i];
}
} else {
for ( int k = 0; k <= 1; ++ k ) {
fight[u] = k;
solve ( u << 1, d - 1 ), solve ( u << 1 | 1, d - 1 );
for ( int i = 0; i <= 1 << d >> 1; ++ i ) {
for ( int j = 0; j <= 1 << d >> 1; ++ j ) {
chkmax ( f[u][i + j], f[u << 1][i] + f[u << 1 | 1][j] );
}
}
}
}
} int main () {
scanf ( "%d %d", &n, &m ), -- n;
for ( int i = 0; i < 1 << n; ++ i ) {
for ( int j = 1; j <= n; ++ j ) {
scanf ( "%d", &a[( 1 << n ) + i][j] );
}
}
for ( int i = 0; i < 1 << n; ++ i ) {
for ( int j = 1; j <= n; ++ j ) {
scanf ( "%d", &b[( 1 << n ) + i][j] );
}
}
solve ( 1, n );
int ans = 0;
for ( int i = 0; i <= m; ++ i ) chkmax ( ans, f[1][i] );
printf ( "%d\n", ans );
return 0;
}

Solution -「JLOI 2015」「洛谷 P3262」战争调度的更多相关文章

  1. 「区间DP」「洛谷P1043」数字游戏

    「洛谷P1043」数字游戏 日后再写 代码 /*#!/bin/sh dir=$GEDIT_CURRENT_DOCUMENT_DIR name=$GEDIT_CURRENT_DOCUMENT_NAME ...

  2. Solution -「JSOI 2019」「洛谷 P5334」节日庆典

    \(\mathscr{Description}\)   Link.   给定字符串 \(S\),求 \(S\) 的每个前缀的最小表示法起始下标(若有多个,取最小的).   \(|S|\le3\time ...

  3. Solution -「洛谷 P4372」Out of Sorts P

    \(\mathcal{Description}\)   OurOJ & 洛谷 P4372(几乎一致)   设计一个排序算法,设现在对 \(\{a_n\}\) 中 \([l,r]\) 内的元素排 ...

  4. Solution -「POI 2010」「洛谷 P3511」MOS-Bridges

    \(\mathcal{Description}\)   Link.(洛谷上这翻译真的一言难尽呐.   给定一个 \(n\) 个点 \(m\) 条边的无向图,一条边 \((u,v,a,b)\) 表示从 ...

  5. Solution -「APIO 2016」「洛谷 P3643」划艇

    \(\mathcal{Description}\)   Link & 双倍经验.   给定 \(n\) 个区间 \([a_i,b_i)\)(注意原题是闭区间,这里只为方便后文描述),求 \(\ ...

  6. 「洛谷4197」「BZOJ3545」peak【线段树合并】

    题目链接 [洛谷] [BZOJ]没有权限号嘤嘤嘤.题号:3545 题解 窝不会克鲁斯卡尔重构树怎么办??? 可以离线乱搞. 我们将所有的操作全都存下来. 为了解决小于等于\(x\)的操作,那么我们按照 ...

  7. 「洛谷3338」「ZJOI2014」力【FFT】

    题目链接 [BZOJ] [洛谷] 题解 首先我们需要对这个式子进行化简,否则对着这么大一坨东西只能暴力... \[F_i=\sum_{j<i} \frac{q_iq_j}{(i-j)^2}-\s ...

  8. 「BZOJ2733」「洛谷3224」「HNOI2012」永无乡【线段树合并】

    题目链接 [洛谷] 题解 很明显是要用线段树合并的. 对于当前的每一个连通块都建立一个权值线段树. 权值线段树处理操作中的\(k\)大的问题. 如果需要合并,那么就线段树暴力合并,时间复杂度是\(nl ...

  9. 「洛谷3870」「TJOI2009」开关【线段树】

    题目链接 [洛谷] 题解 来做一下水题来掩饰ZJOI2019考炸的心情QwQ. 很明显可以线段树. 维护两个值,\(Lazy\)懒标记表示当前区间是否需要翻转,\(s\)表示区间还有多少灯是亮着的. ...

随机推荐

  1. ubuntu18.04 安装谷歌chrome浏览器

    将下载源添加到系统源列表 # sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/source.li ...

  2. Redis 应用问题

    Redis 应用问题 1.缓存穿透 1.1.问题概述 key 对应的数据在数据源中不存在,每次针对此 key 的请求从缓存获取不到,请求都会压到数据源(也就是不断的去查数据库,从而使得数据库系统崩溃) ...

  3. ADD software version display

    ADD software version display ADD software version display1. Problem Description2. Analysis3. Solutio ...

  4. 嫌Excel VBA执行速度慢,这些建议你一定要看

    Excel是办公利器,这无需多言.尤其在办公室,Excel用的熟练与否,会的Excel知识点多不多,很大程度上决定了你工作是否高效,能否按时打卡下班.可我们也时常听到这样的吐槽:Excel好是好,可就 ...

  5. 1.配置桥接,并抓包验证 2.实现免密登录 3.修改登录端口: 22-》2222 4.不允许root用户远程登录 5.创建用户sshuser1,并设置密码,且只允许sshuser1远程ssh登录

    1.配置桥接:  抓包时如果有ens160的ICMP,说明我们的桥接搭建成功通过桥接访问到了ens160(这里忘加图片了) (1)创建一个桥接设备和会话 (2)添加设备和会话到桥接设备上 (3)启动从 ...

  6. Termux搭建hexo博客并部署到GitHub

    Termux搭建hexo博客并部署到GitHub 安装 termux-change-repo apt update apt install git && nodejs &&am ...

  7. manjora20不小心卸载,重新安装terminal,软件商店/软件中心linux类似

    问题 重新安装老版本gnome-shell 如果突然死机可能卸载完了terminal和软件商店,但是没有安装新的. 此时没有terminal也没有软件商店 无法安装软件 解决方案 terminal c ...

  8. 如何根据经纬度计算地面上某点在XYZ空间直角坐标系中的坐标

    如何根据经纬度计算地面上某点在XYZ空间直角坐标系中的坐标 /** * @param r: number 到地心的距离 * @param lon: number 经度 * @param lat: nu ...

  9. netty基础知识

    参考 http://www.infoq.com/cn/articles/netty-high-performance 1. 传统 RPC 调用性能差的三宗罪 1)网络传输方式问题 2)序列化方式问题 ...

  10. atan2(y,x)和pow(x,y)

    atan2(y,x): 函数atan2(y, x)是4象限反正切,求的是y/x的反正切,其返回值为[-π,+π]之间的一个数.它的取值不仅取决于正切值y/x,还取决于点 (x, y) 落入哪个象限: ...