zoukankan      html  css  js  c++  java
  • hdu1054Strategic Game(树形DP)

    链接

    归属简单树形DP 挺简单的 跟第一道一样 就是我跑偏了题意。。以为要覆盖点 纠结啊 推了N久 推不出啊 然后就郁闷了 打了局游戏 边想边打 实在想不出 看下题解 跑偏了

    分两种情况D 方程见代码

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 #define N 2010
     8 int f[N];
     9 struct node
    10 {
    11     int f,ch,m1,m0,br;
    12     void init()
    13     {
    14         f = m0 =ch = br =0;
    15         m1 = 1;
    16     }
    17 }tr[N];
    18 void dfs(int u)
    19 {
    20     int child = tr[u].ch;
    21     while(child)
    22     {
    23         dfs(child);
    24         tr[u].m1+=min(tr[child].m0,tr[child].m1);
    25         tr[u].m0+=tr[child].m1;
    26         child = tr[child].br;
    27     }
    28 }
    29 int main()
    30 {
    31     int i,j,n,u,m,v;
    32     while(scanf("%d",&n)!=EOF)
    33     {
    34         memset(f,0,sizeof(f));
    35         for(i = 1; i <= n ; i++)
    36         {
    37             scanf("%d:(%d)",&u,&m);
    38             u++;
    39             if(!f[u])
    40             tr[u].init();
    41             for(j = 1; j <= m ; j++)
    42             {
    43                 scanf("%d",&v);
    44                 v++;
    45                 tr[v].init();
    46                 tr[v].f = u;
    47                 tr[v].br = tr[u].ch;
    48                 tr[u].ch = v;
    49                 f[v] = 1;
    50             }
    51         }
    52         for(i = 1; i <= n ; i++)
    53         {
    54             if(!f[i])
    55             break;
    56         }
    57         dfs(i);
    58         cout<<min(tr[i].m0,tr[i].m1)<<endl;
    59     }
    60     return 0;
    61 }
    View Code
  • 相关阅读:
    面向对象
    面向对象
    面向对象
    面向对象
    面向对象
    面向对象
    面向对象
    面向对象
    3.1
    面向对象
  • 原文地址:https://www.cnblogs.com/shangyu/p/3281132.html
Copyright © 2011-2022 走看看