此题亦一眼看出算法,一次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;

}

poj 1192的更多相关文章

  1. poj 1192最优连通子集(简单树形dp)

    题目链接:http://poj.org/problem?id=1192 #include<cstdio> #include<cstring> #include<iostr ...

  2. poj 1192(树形DP)

    最优连通子集 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2589   Accepted: 1382 Descriptio ...

  3. 树形动态规划(树形DP)入门问题—初探 & 训练

    树形DP入门 poj 2342 Anniversary party   先来个题入门一下~ 题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上 ...

  4. POJ 2195 Going Home 最小费用最大流 尼玛,心累

    D - Going Home Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Subm ...

  5. poj 题目分类(1)

    poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...

  6. POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)

    本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...

  7. poj 动态规划题目列表及总结

    此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...

  8. poj动态规划列表

    [1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...

  9. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

随机推荐

  1. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 几十套业务系统集中统一授权管理实现经验分享

    由于这几年互联网电商的快速发展,快递公司也进入了快速发展的绝好快速成长期.随着社会的强劲需求公司的业绩年年攀新高.快速发展的公司都需要有强大的IT信息系统,硬件设备基本上款到了货也可以到了,但是软件系 ...

  2. spring独立事务分析

    最近在ssm框架的项目中需要用到独立事务的实现,找了半天,搜集了以下理论知识为实现做准备.事务管理器为datasource (1)Spring在transactiondefinition接口中规定了7 ...

  3. request.getcontextPath() 详解

    request.getcontextPath() 详解 文章分类:Java编程 <%=request.getContextPath()%>是为了解决相对路径的问题,可返回站点的根路径. 但 ...

  4. 疑难杂症——EF+Automapper引发的查询效率问题解析

    前言:前面总结了一些WebApi里面常见问题的解决方案,本来打算来分享下oData+WebApi的使用方式的,奈何被工作所困,只能将此往后推了.今天先来看看EF和AutoMapper联合使用的一个问题 ...

  5. Coding 及 git 的工程使用方法

        在过去的两周,同学们除了在学习 C 语言之外,还在学习如何利用 git 将自己的代码上传到 coding 中.也有大量的同学,成功的上传了代码.但是,实际上大部分同学的用法都不合理.这里,以一 ...

  6. apt-get 相關設定

    /etc/apt/apt.conf.d/01proxy 若加了以下這行,則 apt-get 都會透過下方網址get Acquire::http::Proxy "http://aptcache ...

  7. Microsoft.AspNet.Identity 自定义使用现有的表—登录实现

    Microsoft.AspNet.Identity是微软新引入的一种membership框架,也是微软Owin标准的一个实现.Microsoft.AspNet.Identity.EntityFrame ...

  8. hdu3087 LCA + 暴力

    Network Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Su ...

  9. outlook 2016 for windows 每次刷新发送接收邮件会弹出登陆界面

    Q: outlook2016 for windows 每次刷新发送接收邮件会弹出登陆界面,office365 ProPlus 都是正常激活了,Word 和Excel都不存在此类问题 A: 排除用户的o ...

  10. BZOJ 4698: Sdoi2008 Sandy的卡片

    4698: Sdoi2008 Sandy的卡片 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 106  Solved: 40[Submit][Stat ...