zoukankan      html  css  js  c++  java
  • poj 1192

    此题亦一眼看出算法,一次AC。

    没什么好讲的,就是一个普通的树形动规。

    用dp[n][0]表示n号顶点不取时的最大值,dp[n][1]表示n号顶点取时的最大值。

    dp[n][0]=max{dp[x][0],dp[x][1]}(x is son of n)

    dp[n][1]=max{sigma(x1,x2,…,xk)}(x1,x2,…,xk are k sons of n)

    本来能写O(n)的算法,偷懒写了O(n^2)的算法,也能AC

    优化:

    用邻接链表,O(n)(我没用)

    代码:

    #include<cstdio>

    #include<cstdlib>

    using namespace std;

    int n,x[1001],y[1001],fa[1001],q[2001],dp[1001][2]={0},p[1001];

    bool vis[1001]={0};

    int max(int x,int y){

             return(x>y)?x:y;

    }

    void solve(int x){

             dp[x][0]=0;dp[x][1]=p[x];

             for(int i=1;i<n;i++)

                       if(fa[i]==x){

                                solve(i);

                                dp[x][0]=max(dp[x][0],max(dp[i][0],dp[i][1]));

                                dp[x][1]=dp[x][1]+max(0,dp[i][1]);

                       }

             return;

    }

    int main(){

             scanf("%d",&n);

             for(int i=0;i<n;i++)

                       scanf("%d%d%d",&x[i],&y[i],&p[i]);

             int h=0,t=1;vis[0]=1;

             for(q[0]=0;h<t;h++){

                       for(int i=0;i<n;i++)

                                if(!vis[i] && abs(x[i]-x[q[h]])+abs(y[i]-y[q[h]])==1){

                                         q[t++]=i;

                                         fa[i]=q[h];

                                         vis[i]=1;

                                }

             }

    //      for(int i=0;i<n;i++)printf("%d ",fa[i]);printf("\n");

             solve(0);

             printf("%d\n",max(dp[0][0],dp[0][1]));

             return 0;

    }

  • 相关阅读:
    【转】JavaScript ArrayBuffer浅析
    【转】JS中的Blob对象
    javascript BLOB 图片预览
    生活小技巧:Excel中PMT函数的使用
    小知识:TFA收集日志报错空间不足
    idea 新手入坑操作指南
    【转】Error type 3 类型错误,Error: Activity class {} does not exist.Error while Launching activity解决方法
    C#批量修改文件后缀名
    零基础入门Unity
    UE4户外森林场景全流程教学
  • 原文地址:https://www.cnblogs.com/shanquan2/p/3165966.html
Copyright © 2011-2022 走看看