BZOJ4007 [JLOI2015]战争调度
根本想不出来。。。
原来还是暴力出奇迹啊QAQ
无限ymymym中
/**************************************************************
Problem: 4007
User: rausen
Language: C++
Result: Accepted
Time:240 ms
Memory:13216 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
const int N = ( << ) + ; int n, m, ans;
int a[N][N], b[N][N], f[N][N];
int now[N]; inline int read(); #define ls p << 1
#define rs p << 1 | 1
void dfs(int p, int sz) {
int i, j, mnl, mxl, tot;
if (sz == ) {
f[p][] = f[p][] = ;
for (i = p >> ; i; i >>= )
if (now[i] == ) f[p][] += a[p][i];
else f[p][] += b[p][i];
return;
}
tot = min(sz, m);
memset(f[p], , sizeof(f[][]) * (tot + ));
now[p] = ;
dfs(ls, sz >> ), dfs(rs, sz >> );
for (i = ; i <= tot; ++i) {
mnl = max(i - (sz >> ), ), mxl = min(sz >> , i);
for (j = mnl; j <= mxl; ++j)
f[p][i] = max(f[p][i], f[ls][j] + f[rs][i - j]);
} now[p] = ;
dfs(ls, sz >> ), dfs(rs, sz >> );
for (i = ; i <= tot; ++i) {
mnl = max(i - (sz >> ), ), mxl = min(sz >> , i);
for (j = mnl; j <= mxl; ++j)
f[p][i] = max(f[p][i], f[ls][j] + f[rs][i - j]);
}
}
#undef ls
#undef rs int main() {
int i, j;
n = read(), m = read();
for (i = << n - ; i < << n; ++i)
for (j = i >> ; j; j >>= )
a[i][j] = read();
for (i = << n - ; i < << n; ++i)
for (j = i >> ; j; j >>= )
b[i][j] = read();
dfs(, << n - );
for (ans = i = ; i <= m; ++i)
ans = max(ans, f[][i]);
printf("%d\n", ans);
return ;
} inline int read() {
static int x;
static char ch;
x = , ch = getchar();
while (ch < '' || '' < ch)
ch = getchar();
while ('' <= ch && ch <= '') {
x = x * + ch - '';
ch = getchar();
}
return x;
}
BZOJ4007 [JLOI2015]战争调度的更多相关文章
- [BZOJ4007][JLOI2015]战争调度(DP+主定理)
第一眼DP,发现不可做,第二眼就只能$O(2^{1024})$暴搜了. 重新审视一下这个DP,f[x][i]表示在x的祖先已经全部染色之后,x的子树中共有i个参战平民的最大贡献. 设k为总结点数,对于 ...
- 【BZOJ4007】[JLOI2015]战争调度(动态规划)
[BZOJ4007][JLOI2015]战争调度(动态规划) 题面 BZOJ 洛谷 题解 神仙题,我是做不来. 一个想法是设\(f[i][j]\)表示当前考虑到\(i\)节点,其子树内有\(j\)个人 ...
- [JLOI2015]战争调度
[JLOI2015]战争调度 题目 解题报告 考试打了个枚举的暴力,骗了20= = $qsy$大佬的$DP$: 其实就是枚举= =,只不过枚举的比较强= = #include<iostream& ...
- 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp
题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...
- 【bzoj4007】[JLOI2015]战争调度 暴力+树形dp
Description 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有下属,这种 关系刚好组成一个 n 层的完全二叉树.公民 i 的下属是 2 * i 和 2 * i +1.最下 ...
- bzoj4007 & loj2111 [JLOI2015]战争调度 复杂度分析+树上背包
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4007 https://loj.ac/problem/2111 题解 同 [NOI2006]网络 ...
- [JLOI2015]战争调度【暴力+树形Dp】
Online Judge:Bzoj4007,Luogu P3262 Label:暴力,树形Dp 题解 参考了这篇blog https://www.cnblogs.com/GXZlegend/p/830 ...
- 【题解】JLOI2015战争调度
搜索+状压+DP. 注意到一个性质:考虑一棵以x为根的子树,在x到原树的根的路径上的点如果都已经确定了方案,那么x的左右儿子的决策就彼此独立,互不影响了.所以我们考虑状压一条路径上每一层节点的状态,求 ...
- 【BZOJ 4007】[JLOI2015]战争调度 DP+搜索+状压
又是一道思路清新的小清晰. 观察题目,如果我们确定了平民或者贵族的任意一方,我们便可以贪心的求出另一方,至此20分:我们发现层数十分小,那么我们就也是状压层数,用lca转移,线性dp,至此50分(好像 ...
随机推荐
- 关于【bootstrap modal 模态框弹出瞬间消失的问题】
前提是你没有重复引入bootstrap.js\bootstrap.min.js和modal.js.一下提供一个小例子. <button class="btnbtn-primary bt ...
- Chrome浏览器的密码隐患
谷歌浏览器的密码填充使得登陆账号很方便 但在你了解了Chrome的密码特性机制后,你该做点什么了 1.如何查看已保存的密码 Chrome 密码管理器的进入方式:右侧扳手图标→设置→显示高级设置→密码和 ...
- iOS - OC RunLoop 运行循环/消息循环
1.RunLoop 1)运行循环: 运行循环在 iOS 开发中几乎不用,但是概念的理解却非常重要. 同一个方法中的代码一般都在同一个运行循环中执行,运行循环监听 UI 界面的修改事件,待本次运行循环结 ...
- [转载] 数据库分析手记 —— InnoDB锁机制分析
作者:倪煜 InnoDB锁机制常常困扰大家,不同的条件下往往表现出不同的锁竞争,在实际工作中经常要分析各种锁超时.死锁的问题.本文通过不同条件下的实验,利用InnoDB系统给出的各种信息,分析了锁的工 ...
- 基于Linux的oracle数据库管理 part6 (backup 相关的脚本)
这里只是简单的介绍几种 备份方法 备份: 逻辑备份, 冷备份, 热备份 逻辑备份 也称作 导入(import), 导出(export), 作用是在不同的oracle数据库之间转移数据 物理备份, 就是 ...
- Mono for Android布局控件属性小结
1. layout_weight 用于给一个线性布局中的诸多视图的重要度赋值. 所有的视图都有一个layout_weight值,默认为零,意思是需要显示 多大的视图就占据多大的屏幕空 间.若赋一个高于 ...
- python 在不同层级目录import 模块的方法
有一个文件夹/home/a, 里面有个模块叫b.py, 我怎么把他import到程序里? 1). import sys; sys.path.append("/home/a/") ...
- js-------》(小效果)实现倒计时及时间对象
js实现倒计时及时间对象 JS实现倒计时效果代码如下: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset ...
- Ubuntu系统下面软件安装更新命令
在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区别 pip用来安装来自PyPI( ...
- GO数据库
Golang 数据库操作 Golang 数据库 MySQL Golang支持DB操作位于database包下,支持基本CRUD操作.事务和Prepared Statement,本文以MySQL为例. ...