bzoj 2427[HAOI2010] 软件安装
来源:互联网 发布:里约奥运会女排数据 编辑:程序博客网 时间:2024/06/06 17:22
/*强连通分量缩点,完全背包就够了*//*受hzwer大神的启发*/#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;int dfn[205],low[205],head[205],tail[205],w[205],v[205],d[205],weight[205],value[205],belong[205],stack[205];int f[205][600];int n,m,times,top,tar_num,tot,ans;bool vis[205],in[205];struct dd{int begin,end,next;}jie[6000];struct df{int begin,end,next;}st[6000];void add(int x,int y){jie[++tot].begin=x; jie[tot].end=y; jie[tot].next=head[x]; head[x]=tot;}void add2(int x,int y){in[y]=1;st[++ans].begin=x; st[ans].end=y; st[ans].next=tail[x]; tail[x]=ans;}void tar(int x){times++;dfn[x]=low[x]=times; vis[x]=1; stack[++top]=x;for(int i=head[x];i;i=jie[i].next){int sto=jie[i].end;if(!dfn[sto]){tar(sto); if(low[sto]<low[x]) low[x]=low[sto];}else if(vis[sto]) if(dfn[sto]<low[x]) low[x]=dfn[sto];}if(dfn[x]==low[x]){++tar_num;int yu;do{ yu=stack[top--];belong[yu]=tar_num;weight[tar_num]+=w[yu];value[tar_num]+=v[yu];vis[yu]=0;}while(x!=yu);}}void getans(int x){for(int i=tail[x];i;i=st[i].next){int yu=st[i].end;getans(yu);for(int j=m-weight[x];j>=0;j--) for(int k=0;k<=j;++k) if(f[x][j]<f[x][k]+f[yu][j-k]) f[x][j]=f[x][k]+f[yu][j-k];}for(int i=m;i>=0;--i) if(i>=weight[x]) f[x][i]=f[x][i-weight[x]]+value[x]; else f[x][i]=0;}void rebuild(){for(int i=1;i<=tot;++i) if(belong[jie[i].begin]!=belong[jie[i].end]) add2(belong[jie[i].end],belong[jie[i].begin]);for(int i=1;i<=tar_num;++i) if(!in[i]) add2(tar_num+1,i);getans(tar_num+1);}int main(){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]);for(int i=1;i<=n;++i){if(!d[i]) continue;else add(i,d[i]);}for(int i=1;i<=n;++i) if(!dfn[i]) tar(i);rebuild();printf("%d",f[tar_num+1][m]);}
0 0
- bzoj 2427[HAOI2010] 软件安装
- BZOJ 2427: [HAOI2010]软件安装
- BZOJ 2427: [HAOI2010]软件安装
- 2427: [HAOI2010]软件安装
- BZOJ 2427: [HAOI2010]软件安装|树形动规|tarjan
- |BZOJ 2427|树形DP|强连通分量|[HAOI2010]软件安装
- BZOJ 2427 [HAOI2010]软件安装 Tarjan+树上动态规划
- BZOJ 2427: [HAOI2010]软件安装 Tarjan缩点 + DP
- bzoj 2427: [HAOI2010]软件安装(Trajan+树形DP)
- bzoj 2427: [HAOI2010]软件安装(tarjan缩点+树形dp)
- BOZJ 2427: [HAOI2010]软件安装 树形背包
- bzoj2427: [HAOI2010]软件安装
- 软件安装 [HAOI2010,Bzoj2427]
- BZOJ2427: [HAOI2010]软件安装
- [HAOI2010] 软件安装
- [HAOI2010]软件安装
- [HAOI2010]软件安装
- 【bzoj2427】[HAOI2010]软件安装
- 判断获取json数据中key是否为空
- OpenCv获取摄像头并显示摄像内容
- 100.Same Tree
- Android基础入门教程——2.4.14 ViewPager的简单使用
- superoj912 resistance
- bzoj 2427[HAOI2010] 软件安装
- 利用Apache的转发模块实现反向代理服务器
- iOS效果 :(1) CALayer 图层阴影,边框,圆角,圆型图片的阴影
- 283.Move Zeroes
- 关于代码规范问题(启动活动的最佳写法)
- bzoj 1046: [HAOI2007]上升序列
- Word Pattern
- 新闻的频道订阅界面和功能
- 阅读《代码大全》后的读书笔记(第二部分)