bzoj2427
一开始读错题导致各种不会做,无奈
其实是一道水题,缩点反向建图树形dp即可
type link=^point;
point=record
po:longint;
next:link;
end; var dfn,low,st,w,be,v,c:array[..] of longint;
e:array[..] of link;
fa,vis,f:array[..] of boolean;
dp:array[..,..,..] of longint;
y,s,h,t,ans,i,j,n,m,x:longint;
ch:boolean; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; procedure add(x,y:longint);
var p:link;
begin
new(p);
p^.po:=y;
p^.next:=e[x];
e[x]:=p;
end; procedure tarjan(x:longint);
var y,r:longint;
p:link;
begin
inc(h);
dfn[x]:=h;
low[x]:=h;
vis[x]:=true;
f[x]:=true;
inc(t);
st[t]:=x;
p:=e[x];
while p<>nil do
begin
y:=p^.po;
if not vis[y] then
begin
tarjan(y);
low[x]:=min(low[x],low[y]);
end
else if f[y] then low[x]:=min(low[x],low[y]);
p:=p^.next;
end;
if dfn[x]=low[x] then
begin
while st[t+]<>x do
begin
r:=st[t];
be[r]:=x;
f[r]:=false;
dec(t);
end;
end;
end; procedure treedp(x:longint);
var y,i,j,k:longint;
p:link;
begin
p:=e[x];
dp[x,w[x],]:=v[x];
k:=;
while p<>nil do
begin
y:=p^.po;
treedp(y);
k:=-k;
for i:= to m do
dp[x,i,k]:=dp[x,i,-k];
for i:= to m-w[x] do
if dp[y,i,]> then
begin
for j:=w[x] to m-i do
dp[x,j+i,k]:=max(dp[x,j+i,k],dp[x,j,-k]+dp[y,i,]);
end;
p:=p^.next;
end;
if k= then
for i:= to m do
dp[x,i,]:=dp[x,i,];
end; begin
readln(n,m);
for i:= to n do
read(w[i]);
for i:= to n do
read(v[i]);
for i:= to n do
begin
read(c[i]);
if c[i]<> then add(i,c[i]);
end;
for i:= to n do
if not vis[i] then
begin
h:=;
t:=;
tarjan(i);
end; for i:= to n do
begin
if be[i]<>i then
begin
inc(w[be[i]],w[i]);
inc(v[be[i]],v[i]);
end;
e[i]:=nil;
end;
for i:= to n do
if be[i]=i then
begin
if (be[c[i]]=i) or (c[i]=) then add(,i)
else add(be[c[i]],i);
end;
ans:=;
v[]:=;
w[]:=;
treedp();
for i:= to m do
ans:=max(ans,dp[,i,]);
writeln(ans);
end.
bzoj2427的更多相关文章
- 【BZOJ2427】[HAOI2010]软件安装(动态规划,Tarjan)
[BZOJ2427][HAOI2010]软件安装(动态规划,Tarjan) 题面 BZOJ 洛谷 题解 看到这类题目就应该要意识到依赖关系显然是可以成环的. 注意到这样一个性质,依赖关系最多只有一个, ...
- 【BZOJ2427】[HAOI2010]软件安装 Tarjan+树形背包
[BZOJ2427][HAOI2010]软件安装 Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为 ...
- 【BZOJ-2427】软件安装 Tarjan + 树形01背包
2427: [HAOI2010]软件安装 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 960 Solved: 380[Submit][Status ...
- bzoj2427: [HAOI2010]软件安装
Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和 ...
- [BZOJ2427]软件安装
Problem 每个软件都要安装某些软件才能安装,而且都有体积和价值,求安装的价值最大值 Solution 对于每个环,我们可以知道必须全部一起取或者不取,因此我们先用Tarjan缩点 然后我们用一个 ...
- 【BZOJ2427】【HAOI2010】软件安装
无力吐槽…… 原题: 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最 ...
- BZOJ2427: [HAOI2010]软件安装 tarjan+树形背包
分析: 一开始我以为是裸的树形背包...之后被告知这东西...可能有环...什么!有环! 有环就搞掉就就可以了...tarjan缩点...建图记得建立从i到d[i]之后跑tarjan,因为这样才能判断 ...
- [BZOJ2427][HAOI2010]软件安装(Tarjan+DP)
2427: [HAOI2010]软件安装 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1987 Solved: 791[Submit][Statu ...
- BZOJ2427:[HAOI2010]软件安装(树形DP,强连通分量)
Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和 ...
随机推荐
- 快速记忆JavaScript中exec和match的使用
JS模式匹配中exec,match用得非常多,所以掌握其用法对我们进行字符串的处理帮助非常大 1.exec的定义其用法 exec与match主要的不同是,exec是正则表达式里面的方法. ...
- 我是一块cpu 《转载》
我是一块cpu,原装intel,在一台普通的台式计算机里供职.我有个小弟是内存,我要靠他时时刻刻陪伴我工作,其实有时候我并不是没有某某地址的资料,而是懒得翻--麻烦. 还有一个老大哥叫bios,每次那 ...
- Android layout的横竖屏处理
一.layout-land和layout-prot的区别与使用 默认情况下,创建的Android项目里只有一个layout文件夹,尽管这样也可以横竖屏切换用,但是某些布局横屏过后闲的格外的丑,如下图 ...
- JVM Run-Time Data Areas.
Ref: JVM Run-Time Data Areas class SimpleThread extends Thread { public SimpleThread(String name) { ...
- 【原】ios tableViewCell 自适应高度
原文:http://www.cnblogs.com/A--G/p/4819051.html 前言:之前在做一个类似微博的小需求时候,用table view实现了微博文字和图片等等的基本展示,由于文字和 ...
- iOS开发之指定UIView的某几个角(小于4)为圆角
在iOS开发中,我们经常会遇到View设置圆角的问题,如果需要将UIView的4个角全部都为圆角,做法相当简单,只需设置其Layer的cornerRadius属性即可(项目需要使用QuartzCore ...
- SGU 191.Exhibition(模拟)
时间限制:0.25s 空间限制:4M 题意: 有两个公司A.B,他们要展览物品,但是A公司的展柜要放B公司的物品,B公司的展柜要放A公司物品.最开始只有一个空柜台,从指定的一个公司开始,轮流进行操作, ...
- 【cogs858】磁性链
[题目描述] 有N块编号为1~N的特殊磁石相互吸附组成一条磁性链,只有它们紧挨着时才会传递吸力,他们之间的吸力很大,如果我们要从N块相连的磁石中取出一块,那么需要消耗N-1个单位的能量,空缺处不再有吸 ...
- 获取Enum的扩张方法。
public static class EnumExtention { /// <summary> /// 获取枚举的描述信息 /// </summary> /// <t ...
- cetos 6.3 安装 apache+mysql+php
1.安装 apache 服务器 yum install httpd 启动服务 service httpd start or /etc/init.d/httpd start 2.安装 mysql 数 ...