码迷,mamicode.com
首页 > 其他好文 > 详细

没有上司的舞会——树状DP 入门题,真的比想象中简单许多

时间:2017-07-26 21:53:01      阅读:597      评论:0      收藏:0      [点我收藏+]

标签:dev   splay   标签   线性   namespace   opened   cin   div   ios   

  本来线性DP 都不怎么有信心,可以说学得非常差,于是下意识地觉得树状的肯定超过了我的理解能力,然后做这题的时候就直接翻了题解,哪知道这么简单……简直比01 背包还好理解啊,看来以后不能总是看到算法标签就退避了。

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<vector>
 4 using namespace std;
 5 const int N=10086;
 6 int n,val[N];
 7 int f[N][4];
 8 bool rtn[N];
 9 vector<int> gr[N];
10 
11 void dfs(int x){
12     f[x][1]=val[x];
13     for(int i=0;i<gr[x].size();i++){
14         dfs(gr[x][i]);
15         f[x][0]+=max(f[gr[x][i]][0],f[gr[x][i]][1]);
16         f[x][1]+=f[gr[x][i]][0];
17     }
18     
19 }
20 
21 int main(){
22     cin>>n;
23     for(int i=1;i<=n;i++)cin>>val[i];
24     int xxx,yyy;
25     while(cin>>xxx>>yyy&&xxx&&yyy){gr[yyy].push_back(xxx);rtn[xxx]=true;}
26     
27     for(int i=1;i<=n;i++)
28         if(!rtn[i]){
29             dfs(i);
30             cout<<max(f[i][0],f[i][1])<<endl;
31             break;
32         }
33     return 0;
34 }
Method_01

  CodeVS 22ms

没有上司的舞会——树状DP 入门题,真的比想象中简单许多

标签:dev   splay   标签   线性   namespace   opened   cin   div   ios   

原文地址:http://www.cnblogs.com/duskfire/p/7241824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!