终于是道中文题了。。。。

当时考试的时候就考的这道题。。。。 果断GG。

思路:

因为有可能存在依赖环,所以呢 先要tarjan一遍 来缩点。

随后就进行一遍树形DP就好了。。

x表示当前的节点。j表示j的空间最多能放多少价值的软件。

状态转移方程:f[x][j]=max(f[x][j],f[x.son][k]+f[x][j-k])

题目说:软件i只有在安装了软件j(包括软件j的直接或间接依赖)的情况下才能正确工作

这句话怎么翻译呢? 直接把W[i]以下的价值设为负无穷不就好了嘛。。

// by SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,xx,t=0,tot=0,cnt=0,top=0,maxx=0,low[105],dfn[105],s[105],p[105],D[105],f[505][505];
int first[105],next[105],v[105],W[105],WW[105],V[105],VV[105],vis[105],in[105];
void add(int x,int y){v[tot]=y,next[tot]=first[x];first[x]=tot++;}
void tarjan(int x){
low[x]=dfn[x]=++cnt;vis[x]=1;s[++top]=x;
for(int i=first[x];~i;i=next[i])
if(!dfn[v[i]])tarjan(v[i]),low[x]=min(low[x],low[v[i]]);
else if(vis[v[i]])low[x]=min(low[x],dfn[v[i]]);
if(low[x]==dfn[x]){t++;do xx=s[top--],vis[xx]=0,p[xx]=t,WW[t]+=W[xx],VV[t]+=V[xx];while(xx!=x);}
}
void dfs(int x){
for(int i=first[x];~i;i=next[i]){
dfs(v[i]);
for(int j=m;j>=0;j--)
for(int k=j;k>=0;k--)
f[x][j]=max(f[x][j],f[v[i]][k]+f[x][j-k]);
}
}
int main(){
memset(first,-1,sizeof(first));
memset(f,0xcf,sizeof(f));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&W[i]);
for(int i=1;i<=n;i++)scanf("%d",&V[i]);
for(int i=1;i<=n;i++)scanf("%d",&D[i]),add(D[i],i);
for(int i=0;i<=n;i++)if(!dfn[i])tarjan(i);
memset(first,-1,sizeof(first));
for(int i=1;i<=n;i++)if(p[D[i]]!=p[i])add(p[D[i]],p[i]),in[p[i]]++;
for(int i=1;i<=t;i++)if(!in[i]&&i!=p[0])add(p[0],i);
for(int i=1;i<=t;i++)for(int j=WW[i];j<=m;j++)f[i][j]=VV[i];
dfs(p[0]);
printf("%d\n",f[p[0]][m]);
}

BZOJ 2427 /HAOI 2010 软件安装 tarjan缩点+树形DP的更多相关文章

  1. bzoj 2427 [HAOI2010]软件安装 Tarjan缩点+树形dp

    [HAOI2010]软件安装 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2029  Solved: 811[Submit][Status][Dis ...

  2. 【BZOJ2427】[HAOI2010] 软件安装(缩点+树形DP)

    点此看题面 大致题意: 有\(N\)个软件,每个软件有至多一个依赖以及一个所占空间大小\(W_i\),只有当一个软件的直接依赖和所有的间接依赖都安装了,它才能正常工作并造成\(V_i\)的价值.求在容 ...

  3. [BZOJ2427][HAOI2010]软件安装-tarjan缩点-树上dp

    <题面> 这个题真伤人 之前Tarjan和树规都没学好,吃了不少亏,仔仔细细的搞了一天,收获颇丰 先来一个Tarjan的链接:$\mathbb{O}$ 题目的数据比较友好: $dp$不对: ...

  4. [HAOI 2010]软件安装

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

  5. 洛谷P2515 [HAOI2010]软件安装(tarjan缩点+树形dp)

    传送门 我们可以把每一个$d$看做它的父亲,这样这个东西就构成了一个树形结构 问题是他有可能形成环,所以我们还需要一遍tarjan缩点 缩完点后从0向所有入度为零的点连边 然后再跑一下树形dp就行了 ...

  6. 【洛谷 P2515】 [HAOI2010]软件安装 (缩点+树形背包)

    题目链接 看到代价和价值这两个关键词,肯定是首先要想到背包的. 但是图中并没有说这是棵树,所以先要\(Tarjan\)缩点,然后就是选课了,跑一遍树形背包就好了. 注意:缩点后应该是一个森林,应该用一 ...

  7. 洛谷 P2515 [HAOI2010]软件安装(缩点+树形dp)

    题面 luogu 题解 缩点+树形dp 依赖关系可以看作有向边 因为有环,先缩点 缩点后,有可能图不联通. 我们可以新建一个结点连接每个联通块. 然后就是树形dp了 Code #include< ...

  8. UVA 11324.The Largest Clique tarjan缩点+拓扑dp

    题目链接:https://vjudge.net/problem/UVA-11324 题意:求一个有向图中结点数最大的结点集,使得该结点集中任意两个结点u和v满足:要目u可以到达v,要么v可以到达u(相 ...

  9. bzoj 2427 软件安装 - Tarjan - 树形动态规划

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

随机推荐

  1. javascript 公历与农历相互转换工具类

    /** * 公历[1900-1-31,2100-12-31]时间区间内的公历.农历互转 * @charset UTF-8 * @Author Jea杨(JJonline@JJonline.Cn) * ...

  2. 【MFC】基于opencv的趣味相机

    为了参加学校的科技节,故用mfc随手制作了一个名为<趣味相机>的小程序: 其中对图形图像处理运用到了opencv. 效果图 这界面逼格低了点╭(╯^╰)╮ 有兴趣的朋友可以在此下载尝试:h ...

  3. hdu2883 最大流,判断满流 优化的SAP算法

    这是09年的多校联赛题目,比10年的难度要大.如果没做过hdu3572,建议先去做.有了解题思维再来做这题. 这题与hdu3572类似.但是1 <= si < ei <= 1,000 ...

  4. vue-cli 安装

    1    node 下载      http://nodejs.cn/download/ 安装 2  npm install vue-cli -g 3  vue init <template-n ...

  5. PCL:Ubuntu下安装配置PCL

    一:安装PCL 依据官网介绍:http://www.pointclouds.org/downloads/linux.html Ubuntu We currently support all Ubunt ...

  6. (转)基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动

    http://www.cnblogs.com/wuhuacong/p/3841338.html 为了提高客户体验和进行一些技术探索,现在正准备把我自己的客户关系管理系统CRM在做一个Web的版本,因此 ...

  7. 8 Mistakes to Avoid while Using RxSwift. Part 1

    Part 1: not disposing a subscription Judging by the number of talks, articles and discussions relate ...

  8. 优动漫PAINT是什么?有哪些功能和特色

    优动漫PAINT软件介绍: 优动漫PAINT是一款功能强大的漫画制作软件,该软件可以帮助漫画创作人员制作出完美,惟妙惟肖的漫画作品,它搭载了绘制漫画和插画所需的所有功能--丰富的笔工具.超强的笔压感应 ...

  9. Laravel5.6安裝:Warning: require(../vendor/autoload.php): failed to open stream: No such file or directory

    在phpstudy下使用composer+laravel安装器的方式安装了Laravel,但是访问的时候报错: Warning: require(D:\phpstudy\WWW\public\mybl ...

  10. 转载:html特殊字符 编码css3 content:&amp;quot;我是特殊符号&amp;quot;

    项目中用到的一些特殊字符和图标 html代码 <div class="cross"></div> css代码 .cross{ width: 20px; he ...