bzoj1040
论环形dp的重要!
其实这个环比较简单,稍微分析一下就知道,
这是一个简单环,并且每个联通块里只含有一个。
我觉得把处理环的关键,就是要找出环形和线形(树形)有什么区别。
如果我们从某处断开的做dp的话,转移的结果只对根节点有影响(不确定);
然后我猜测应该只要找到环上相邻两点然后断开分别以他们为根做treedp就可以了
结果真的是这样……
总感觉缺点什么……
有待进一步思考……
type node=record
point,next:longint;
end; var edge:array[..] of node;
can:array[..] of boolean;
v:array[..] of boolean;
p,w:array[..] of longint;
f:array[..,..] of int64;
len,find,n,u,z,i:longint;
ans,res:int64; function max(a,b:int64):int64;
begin
if a>b then exit(a) else exit(b);
end; procedure add(x,y:longint);
begin
inc(len);
edge[len].point:=y;
edge[len].next:=p[x];
can[len]:=true;
p[x]:=len;
end; procedure dfs(x:longint); //找环
var i,y:longint;
begin
v[x]:=true;
i:=p[x];
while i<>- do
begin
y:=edge[i].point;
if can[i] and not v[y] then
begin
can[i xor ]:=false; //注意防止因为同一条边而回头
dfs(y);
can[i xor ]:=true; //解除标记
end
else if can[i] and v[y] then
begin
u:=x;
z:=y;
find:=i;
end;
i:=edge[i].next;
end;
end; procedure treedp(x:longint);
var i,y:longint;
begin
i:=p[x];
f[x,]:=;
f[x,]:=w[x];
while i<>- do
begin
y:=edge[i].point;
if can[i] then
begin
can[i xor ]:=false;
treedp(y);
can[i xor ]:=true;
f[x,]:=f[x,]+max(f[y,],f[y,]); //基本的treedp
f[x,]:=f[x,]+f[y,];
end;
i:=edge[i].next;
end;
end; procedure dp(i:longint);
begin
dfs(i);
can[find]:=false; //断开
can[find xor ]:=false;
treedp(u);
res:=f[u,];
treedp(z);
ans:=ans+max(f[z,],res); //都是不取根,这里是凭感觉写的,欢迎指教
end; begin
len:=-;
readln(n);
fillchar(p,sizeof(p),);
for i:= to n do
begin
readln(w[i],z);
add(z,i);
add(i,z);
end;
for i:= to n do
if not v[i] then dp(i);
writeln(ans);
end.
bzoj1040的更多相关文章
- 【bzoj1040】骑士
[bzoj1040]骑士 题意 给定一个基环森林,求最大独立集. 分析 其实这是一道一年前做过的题. 只是今天在看bzoj1023的时候突然来了几许兴致,回过头来看一看. 如果对于一棵树的最大独立集, ...
- 【BZOJ1040】骑士(动态规划)
[BZOJ1040]骑士(动态规划) 题面 BZOJ 题解 对于每一组厌恶的关系 显然是连边操作 如果是一棵树的话 很显然的树型\(dp\) 但是,现在相当于有很多个基环 也就是在一棵树的基础上再加了 ...
- 【bzoj1040】 ZJOI2008—骑士
http://www.lydsy.com/JudgeOnline/problem.php?id=1040 (题目链接) 题意 一个基环森林,从中选出不相邻的若干个点使得这些点的点权和最大. Solut ...
- 【BZOJ1040】[ZJOI2008]骑士 树形DP
[BZOJ1040][ZJOI2008]骑士 Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情 ...
- [BZOJ1040] [ZJOI2008]骑士 解题报告
Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火 ...
- 【bzoj1040】骑士[ZJOI2008](树形dp)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1040 这道题,很明显根据仇恨关系构造出的图形是一堆环套树.如果是普通的树,就可以马上裸树 ...
- bzoj1040 基环树上dp
[bzoj1040][ZJOI2008]骑士 2014年2月26日5,2040 Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 ...
- [bzoj1040][ZJOI2008]骑士_树形dp_基环树_并查集
骑士 bzoj-1040 ZJOI-2008 题目大意:n个骑士,每个骑士有权值val和一个讨厌的骑士.如果一个骑士讨厌另一个骑士那么他们将不会一起出战.问出战的骑士最大atk是多少. 注释:$1\l ...
- 【BZOJ-1040】骑士 树形DP + 环套树 + DFS
1040: [ZJOI2008]骑士 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3312 Solved: 1269[Submit][Status ...
- BZOJ1040 [ZJOI2008]骑士
Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各 界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战 ...
随机推荐
- (转) VS2012程序打包部署详解
程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因微软没有将打包工具集成在开发环境中,但是我知道总会有解决办法的. 经过翻阅资料发现 ...
- Arithmetic Expression
时间限制:2000ms 单点时限:200ms 内存限制:256MB 描述 Given N arithmetic expressions, can you tell whose result is cl ...
- 使用Class.getResource和ClassLoader.getResource方法获取文件路径
自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记.主要使用Class及通过ClassLoader来动态获取文件路径. 查阅链接如下: ...
- PHP联合sqlserver2008使用的全过程 ( 原创 亲测)
一.环境 php5.2.5 sqlserver2008 win7 二.配置PHP 1.打开php.in将extension=php_mssql.dll的注释符号去掉. 2.打开php.in将mssql ...
- python中functools.wraps装饰器的作用
functools.wraps装饰器用于显示被包裹的函数的名称 import functools def node(func): #@functools.wraps(func) def wrapped ...
- 【方言】Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 几种 方言配置差异 <?xml v ...
- DB天气app冲刺第二天
烦躁 烦躁 很烦躁 从大早起就想做一个listview的列表 到晚上也没有做好.不知道为什么.决定明天去问问同学 .做不出来太影响心情了.虽然做出来东西的感觉是很好.. 另外觉得真的没有队友是挺孤独. ...
- 数组方法slice()把类数组转成数组和复制一个数组
function a(){ console.log(arguments.length); var c = [].slice.call(arguments);//类数组转成数组 c.push(5); c ...
- IE9、 Firefox、Safari, Chrome的CSS3圆角属性
这篇文章主要是记录一下,微软最新发布的 IE9 浏览器CSS 圆角属性,现在CSS3已经 可以轻松实现跨浏览器的圆角效果,包括Firefox高版本,IE9,Safari,Chrome等高端 浏览器. ...
- [转载]用c写PHP的扩展接口(php5,c++)
原文[http://bugs.tutorbuddy.com/php5cpp/php5cpp/] 第1节. 开始之前 开始前,我要说明:这篇文章所描述的主要是在UNIX的PHP环境上的. 另外一点我要说 ...