一开始读错题导致各种不会做,无奈
其实是一道水题,缩点反向建图树形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的更多相关文章

  1. 【BZOJ2427】[HAOI2010]软件安装(动态规划,Tarjan)

    [BZOJ2427][HAOI2010]软件安装(动态规划,Tarjan) 题面 BZOJ 洛谷 题解 看到这类题目就应该要意识到依赖关系显然是可以成环的. 注意到这样一个性质,依赖关系最多只有一个, ...

  2. 【BZOJ2427】[HAOI2010]软件安装 Tarjan+树形背包

    [BZOJ2427][HAOI2010]软件安装 Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为 ...

  3. 【BZOJ-2427】软件安装 Tarjan + 树形01背包

    2427: [HAOI2010]软件安装 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 960  Solved: 380[Submit][Status ...

  4. bzoj2427: [HAOI2010]软件安装

    Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和 ...

  5. [BZOJ2427]软件安装

    Problem 每个软件都要安装某些软件才能安装,而且都有体积和价值,求安装的价值最大值 Solution 对于每个环,我们可以知道必须全部一起取或者不取,因此我们先用Tarjan缩点 然后我们用一个 ...

  6. 【BZOJ2427】【HAOI2010】软件安装

    无力吐槽…… 原题: 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最 ...

  7. BZOJ2427: [HAOI2010]软件安装 tarjan+树形背包

    分析: 一开始我以为是裸的树形背包...之后被告知这东西...可能有环...什么!有环! 有环就搞掉就就可以了...tarjan缩点...建图记得建立从i到d[i]之后跑tarjan,因为这样才能判断 ...

  8. [BZOJ2427][HAOI2010]软件安装(Tarjan+DP)

    2427: [HAOI2010]软件安装 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1987  Solved: 791[Submit][Statu ...

  9. BZOJ2427:[HAOI2010]软件安装(树形DP,强连通分量)

    Description 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和 ...

随机推荐

  1. Java——(五)Collection之List集合、ArrayList和Vector实现类

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.List集合 List集合代表一个元素有序.客重复的集合,集合中每个元素都有其对应的顺序索引 ...

  2. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.

    WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次  悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...

  3. codevs 1519 过路费 最小生成树+倍增

    /*codevs 1519 过路费 最小生成树+倍增*/ #include<iostream> #include<cstdio> #include<cstring> ...

  4. Castle Windsor Fluent Registration API

    一对一注册 直接注册组件 container.Register( Component.For<MyServiceImpl>() ); 注册接口并提供组件 container.Registe ...

  5. ASP.NET Boilerplate 邮件类使用

    在系统我们自定一个 MySettingProvider,并添加到配置集合中,定义一些邮件参数覆盖默认参数,然后通过IOC容器得到SmtpEmailSender实例,调用send方法就实现了,实现代码如 ...

  6. C# 内存管理优化畅想(三)---- 其他方法&结语

    前两篇文章提出的优化方法,都是不需要修改源代码的,而是在CLR或JIT层面进行自动优化的.但本文中提出的优化方法则需要引入新的语法,开发者只有在源代码中使用了这些新语法,才会获得优化. 1. 允许对象 ...

  7. PL/SQL 记录集合IS TABLE OF的使用

    在PL/SQL代码块中使用select into 赋值的话,有可能返回的是一个结果集.此时,如果使用基本类型或自定义的记录类型,将会报错. 因此,需要定义一个变量,是某种类型的集合.下面以一个基于表的 ...

  8. PTHREAD_MUTEX_INITIALIZER问题

      PTHREAD_MUTEX_INITIALIZER 与 expected expression before ‘{’ token 在进行 Posix thread 编程时,出现以下编译错误:err ...

  9. RecyclerView实例-实现可下拉刷新上拉加载更多并可切换线性流和瀑布流模式(1)

    摘要 最近项目有个列表页需要实现线性列表和瀑布流展示的切换,首先我想到的就是上 [RecyclerView],他本身已经很好的提供了三种布局方式,只是简单做个切换应该是很简单的事情,如果要用Recyc ...

  10. Difference Between XML and XAML.

    XML, or Extensible Markup Language, is a subset  of the more complex SGML (Standard Generalized Mark ...