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;
}
poj 1192的更多相关文章
- poj 1192最优连通子集(简单树形dp)
题目链接:http://poj.org/problem?id=1192 #include<cstdio> #include<cstring> #include<iostr ...
- poj 1192(树形DP)
最优连通子集 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2589 Accepted: 1382 Descriptio ...
- 树形动态规划(树形DP)入门问题—初探 & 训练
树形DP入门 poj 2342 Anniversary party 先来个题入门一下~ 题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上 ...
- POJ 2195 Going Home 最小费用最大流 尼玛,心累
D - Going Home Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
- poj 动态规划题目列表及总结
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- poj动态规划列表
[1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
随机推荐
- Unity 下载存档
各种版本的UNITY下载 https://unity3d.com/cn/get-unity/download/archive
- linux tcp超时重传实现分析
kernel version 3.18.20 1.函数调用关系 tcp_ack-> tcp_clean_rtx_queue-> tcp_ack_update_rtt-> tp-> ...
- Java面试宝典摘抄
1,ClassLoader知识 加载流程:当运行一个程序时,JVM启动,运行bootstrap classloader,该classloader加载Java核心API(此时ExtClassLoader ...
- 安装win7x64、x86总提示文件出错或安装大型软件出错或0x0000001a、0x0000003b蓝屏
从不同地方下载好几个安装包,安装时候到展开文件步骤总是提示文件出错,无法安装下去. 这样可以确认不会是安装包出问题. 搜索原因,偶然看到可能与内存有关. 就检测了一遍,过程:控制面板>管理工具& ...
- bzoj 2287: 【POJ Challenge】消失之物
Description ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. "要使用剩下的 N - 1 物品装满容积为 x ...
- jquery中attr()与prop()区别
我们知道jquery中获取元素属性有两种常见的方法,一个是attr()方法,这个是用的比较多的,也是我们第一个想到的.另外一个就是prop()方法了,这个方法之前很少用到,它是jquery1.6之后新 ...
- MVP之V和P的交互
三者之间的关系 在MVP初探里简单的描述了V和P之间是如何交互的. 无论是PV还是SC,M\V\P这三者之间的关系并没有发生改变,V只是前端的客户代理承现展显数据,P是如何处理客户交互行为的决策者. ...
- RequireJS shim 用法说明
RequireJS中如果使用AMD规范,在使用的过程中没有太多的问题,如果加载非AMD规范的JS文件,就需要使用Require中的shim. require.config({ paths:{ jque ...
- mysql CREATE USER
CREATE USER 'Rhine'@'%' IDENTIFIED BY 'Rhine@2015'; GRANT ALL ON *.* TO 'Rhine'@'%'; flush privilege ...
- iOS中UI阶段常用的一些方法
UI 即 UserInterface(用户界面 1.iOS系统版本,每年都有更新.对我们开发者而言,主要的是观察API的变化. 2.iPhone新手机发布,会产生不同尺寸的屏幕,现在市面上有4种尺寸, ...