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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了没有上司的舞会——树状DP 入门题,真的比想象中简单许多相关的知识,希望对你有一定的参考价值。

  本来线性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 入门题,真的比想象中简单许多的主要内容,如果未能解决你的问题,请参考以下文章

P1352 没有上司的舞会

P1352 没有上司的舞会——树形DP入门

树形DP

luogu P1352ybtoj 树形DP课堂过关 例题1树上求和 & 没有上司的舞会

树形DP没有上司的舞会

树形DP没有上司的舞会