POJ 2342
来源:互联网 发布:php bug管理系统 编辑:程序博客网 时间:2024/04/27 06:26
树状DP第一题,,,刚开始的时候看了一个描述,说是要把多叉树改成二叉树,结果就以为每道题都要这样,倒腾了很久都没开始。。。然后后来看了一下代码。。。。
其实这道题算是入门题,不难,但是有一点不大清楚,就是如果有分离开的两棵树要怎么办。可能是我题目没有看清楚。。。。
跑了110ms...
#include <stdio.h>#include <string.h>#define maxn 6010int father[maxn],n;int dp[maxn][2];int vis[maxn];int max(int x,int y){ if(x>y) return x; else return y;}void find(int x){ int i,j,k; vis[x]=1; for(i=1;i<=n;i++) if(!vis[i]&&father[i]==x) { find(i); dp[x][0]+=max(dp[i][0],dp[i][1]); // printf("**%d %d %d %d\n",dp[i][0],dp[i][1],dp[x][0],i); dp[x][1]+=dp[i][0]; }}int main(){ while(scanf("%d",&n)!=EOF) { int i,j,k; int root=0; memset(dp,0,sizeof(dp)); memset(father,0,sizeof(father)); memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) scanf("%d",&dp[i][1]); // printf("$$%d\n",dp[7]) while(scanf("%d%d",&j,&k)!=EOF&&j+k) { father[j]=k; root=k; } find(k); printf("%d\n",max(dp[root][1],dp[root][0])); } return 0;}
0 0
- POJ 2342
- POJ 2342
- poj-2342
- poj 2342
- POJ 2342
- poj 2342
- poj 2342 Anniversary party
- POJ 2342 Anniversary party
- 树形dp poj 2342
- poj 2342 Anniversary party
- POJ 2342 Anniversary party
- POJ 2342 Anniversary party
- poj 2342 树形DP
- POJ-2342-Anniversary party
- poj 2342 树形DP
- poj 2342 树状DP
- poj 2342 树形DP
- poj 2342 树形dp
- AngularJS学习笔记(一)
- Android JNI 使用的数据结构JNINativeMethod详解
- 用REMASTERSYS定制自己的UBUNTU安装光盘
- 批量修改文件名
- 工作问题总结(二十九)模拟按键(刷新,前进,后退,主页)
- POJ 2342
- [进阶]MySQL学习笔记十一存储过程
- re模块的方法
- 虚拟机暂停后再次启动root用户无法登录
- AlarmManager.RTC和ELAPSED_REALTIME的区别
- xargs命令
- 一些长度限制
- hive导入HDFS数据
- LINK : fatal error LNK1123 (VS2010)