洛谷 1352 没有上司的舞会 树形DP
来源:互联网 发布:ecshop sql 编辑:程序博客网 时间:2024/05/29 10:52
题目:
https://www.luogu.org/problem/show?pid=1352;
套路DP;
由于点权可能为负;
那么上司不来时,下属可来,可不来;
但上司来时,下属一定不能来;
dp[x][0]+=max(dp[v][0],dp[v][1]);
dp[x][1]+=dp[v][0];
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int MAXN=20001;int dp[MAXN][4],fst[MAXN],nxt[MAXN],num[MAXN];int tot,n,fa[MAXN],ans;struct hh{ int from,to;}ma[MAXN];void build(int f,int t){ tot++; ma[tot]=(hh){f,t}; nxt[tot]=fst[f]; fst[f]=tot; return;}void dfs(int x){ for(int i=fst[x];i;i=nxt[i]) { int v=ma[i].to; if(fa[x]==v) continue; dfs(v); dp[x][0]+=max(dp[v][0],dp[v][1]); dp[x][1]+=dp[v][0]; } return;}void solve(){ int x,y; cin>>n; for(int i=1;i<=n;i++) scanf("%d",&num[i]),dp[i][1]=num[i]; while( ~scanf("%d%d",&x,&y)) { if(x==0 && y==0) break; fa[x]=y; build(x,y); build(y,x); } for(int i=1;i<=n;i++) if(fa[i]==0) {dfs(i);} for(int i=1;i<=n;i++) ans=max(ans,max(dp[i][0],dp[i][1])); cout<<ans;}int main(){ solve(); return 0;}
阅读全文
1 0
- 洛谷 1352 没有上司的舞会 树形DP
- [洛谷 1352]没有上司的舞会---树形DP
- 没有上司的舞会--经典树形DP
- 树形DP 没有上司的舞会
- 树形dp 没有上司的舞会
- 1380 没有上司的舞会 树形dp
- 树形DP Tyvj1052 没有上司的舞会
- [树形DP入门]没有上司的舞会
- 【树形dp】没有上司的舞会
- 洛谷p1352没有上司的舞会 树形dp
- 树形dp最大独立集(洛谷1352 没有上司的舞会)
- 【树形DP】wikioi 1380 没有上司的舞会
- Tyvj 1052 没有上司的舞会 树形dp
- codevs 1380 没有上司的舞会(树形dp)
- 树形dp——没有上司的舞会
- Codevs 1380 没有上司的舞会 [树形dp]
- codevs 1380 没有上司的舞会 树形DP
- 【codevs 1380】没有上司的舞会(树形dp)
- 欢迎使用CSDN-markdown编辑器
- 我所理解的代理模式
- Android如何实现开机自动启动Service
- 怎样在apache服务上配置https安全 域名请求
- Mahout的一些推荐算法
- 洛谷 1352 没有上司的舞会 树形DP
- Python开发游戏的正确姿势
- ThreadLocal的用法、原理和用途
- 单例设计模式的UI框架
- Git基础指令集
- Apache Commons-Logging 源码分析
- XML数据的三种解析方式
- Linux 磁盘管理
- Python中文问题 或 SyntaxError: Non-ASCII character '\xe8'