[bzoj2932][POI1999]树的染色问题
被百度搜到的题解(论文?)坑了。
写的那玩意好像石乐志。。。
Description
Input
Output
Sample Input
Sample Output
#include<bits/stdc++.h>
#define L t[u].ls
#define R t[u].rs
using namespace std;
const int mxn=;
inline int read(){
int r=,f=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){r=r*+c-'';c=getchar();}
return r*f;
}
int n,c=;
char s[mxn];
struct Node{
int ls,rs;
}t[mxn];
void dfs1(int u){
if(s[u]==''){
t[u].ls=t[u].rs=-;
}
else if(s[u]==''){
c++;t[u].ls=c;
dfs1(c);
t[u].rs=-;
}
else{
c++;t[u].ls=c;
dfs1(c);
c++;t[u].rs=c;
dfs1(c);
}
}
void init(){
scanf("%s",s+);
n=strlen(s+);
dfs1();
}
int f[mxn][],g[mxn][];
void dfs2(int u){
f[u][]=g[u][]=;
f[u][]=g[u][]=;
f[u][]=g[u][]=;
if(s[u]=='')return;
dfs2(L);
if(!~R){
f[u][]+=max(f[L][],f[L][]);
f[u][]+=max(f[L][],f[L][]);
f[u][]+=max(f[L][],f[L][]);
g[u][]+=min(g[L][],g[L][]);
g[u][]+=min(g[L][],g[L][]);
g[u][]+=min(g[L][],g[L][]);
}
else{
dfs2(R);
f[u][]+=max(f[L][]+f[R][],f[L][]+f[R][]);
f[u][]+=max(f[L][]+f[R][],f[L][]+f[R][]);
f[u][]+=max(f[L][]+f[R][],f[L][]+f[R][]);
g[u][]+=min(g[L][]+g[R][],g[L][]+g[R][]);
g[u][]+=min(g[L][]+g[R][],g[L][]+g[R][]);
g[u][]+=min(g[L][]+g[R][],g[L][]+g[R][]);
}
}
int main(){
init();
dfs2();
cout<<max(f[][],max(f[][],f[][]))<<' '<<min(g[][],min(g[][],g[][]));
}
[bzoj2932][POI1999]树的染色问题的更多相关文章
- codevs 1191 树轴染色 线段树区间定值,求和
codevs 1191 树轴染色 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.codevs.cn/problem/1191/ Des ...
- HDU3974 Assign the task(多叉树转换为线段+线段树区间染色)
题目大意:有n个人,给你他们的关系(老板和员工),没有直属上司的人就是整个公司的领导者,这意味着n个人形成一棵树(多叉树).当一个人被分配工作时他会让他的下属也做同样的工作(并且立即停止手头正在做的工 ...
- ZOJ 1610.Count the Colors-线段树(区间染色、区间更新、单点查询)-有点小坑(染色片段)
ZOJ Problem Set - 1610 Count the Colors Time Limit: 2 Seconds Memory Limit: 65536 KB Painting s ...
- hdu 5023(线段树区间染色,统计区间内颜色个数)
题目描述:区间染色问题,统计给定区间内有多少种颜色? 线段树模板的核心是对标记的处理 可以记下沿途经过的标记,到达目的节点之后一块算,也可以更新的时候直接更新到每一个节点 Lazy操作减少修改的次数( ...
- SDOI2017 树点染色
\[SDOI2017 树点染色\] 题目描述 Bob 有一棵 $ n $ 个点的有根树,其中 $ 1 $ 号点是根节点.Bob 在每个节点上涂了颜色,并且每个点上的颜色不同. 定义一条路径的权值是,这 ...
- 线段树区间染色 ZOJ 1610
Count the Colors ZOJ - 1610 传送门 线段树区间染色求染色的片段数 #include <cstdio> #include <iostream> #in ...
- 5.29 省选模拟赛 树的染色 dp 最优性优化
LINK:树的染色 考场上以为这道题要爆蛋了 没想到 推出正解来了. 反正是先写了爆搜的 爆搜最近越写越熟练了 容易想到dp 容易设出状态 f[i][j]表示以i为根的子树内白色的值为j此时黑色的值怎 ...
- POJ 1436 (线段树 区间染色) Horizontally Visible Segments
这道题做了快两天了.首先就是按照这些竖直线段的横坐标进行从左到右排序. 将线段的端点投影到y轴上,线段树所维护的信息就是y轴区间内被哪条线段所覆盖. 对于一条线段来说,先查询和它能相连的所有线段,并加 ...
- POJ 2528 Mayor's posters (线段树,染色问题,离散化要注意)
做这题建议看一下该题的discuss. #include <iostream> #include <stdio.h> #include <string.h> #in ...
随机推荐
- [topcoder]TheConsecutiveIntegersDivOne
http://community.topcoder.com/stat?c=problem_statement&pm=13625&rd=16278 首先,如果记得曼哈顿距离最小值那个问题 ...
- input-file类型accept 属性对性能的影响
上传图片的时候,有时会加一些限制,如下,进行上传类型的过滤,如 <input type="file" name="pic" id="pic&qu ...
- 五环之歌之PHP分页
根据以往的经验,对于很多初学者,分页功能实现起来还是有一定的困难的,为了帮大家解决这样的问题:特此献上五环之歌.从此分页功能便是如小岳岳唱歌一样简练,漂亮,精干.哈哈,不闲扯了.正式进入千锋PHP五环 ...
- git github添加远程仓库出错 remote origin already exists
在github上建立了仓库后,执行 git remote add origin https://github.com/zhangsan/sample.git时,提示 remote origin alr ...
- 【转载】#330 - Derived Classes Do Not Inherit Constructors
A derived class inherits all of the members of a base class except for its constructors. You must de ...
- Pascal之Hello World
Pascal入门篇. 平台:Windows 7 ultimate x64 工具:Free Pascal 下载安装,界面如下: 右键属性,选择“437(OEM-美国)”,重新打开程序,乱码消失. ...
- openstack kilo python cinderclient
➜ ~ pythonPython 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on ...
- 移除input number上的spinner
HTML 5 的表单中有着丰富的input种类,比如说input[type="number"],就可以保证用户输入数字,但是input也有一些不好的地方——带有 spinner. ...
- 使用Mac的过程中的一些小操作
前言:使用Mac的过程中的一些小操作 查看Mac系统是32位还是64位: 方法1: 点击左上角的苹果按钮->关于本机->概览->系统报告->软件->偏好设置面板:右侧有提 ...
- 5.vue解决动态img :src绑定
前言: 因为静态资源在vue中是需要经过编译的, 所以动态拼接的图片地址,在:src的时候不经过编译. 就会发生图片404,找不到资源. 那么本地图片资源如何动态的绑定呢? 实践: 其实,真相往往就是 ...