poj1062解题报告
来源:互联网 发布:淘宝恶意退款不退货 编辑:程序博客网 时间:2024/05/17 09:39
题意:就是一个搜索,但是是一颗树的搜索,在这里要以最方便的数据结构存放,以前每台做过这种树的题,也不会构造,现在给予自己的理解,也算可以自己做出来了。。
思路:我是用DFS做的,思路比较简单,但是多了一个要求,等级!!但是只要认真分析就没事的。。
注意:1.酋长的等级不是最高的
2.探险家与地等级的交易,如果超过M,则高等级的不会与他再次交易,反过来也是,所以一定要记录探险家max_level和min_level;这样才可以成功的理解;;
附上我的AC代码::
#include<stdio.h>int price[110];int level[110];int bian[110][110];int cun[110][110];int M,N;int ma(int x,int y){ if(x>y) return x; return y;}int mi(int x,int y){ if(x>y) return y; return x;}void put(){ scanf("%d%d",&M,&N); for(int i=1;i<=N;i++) { int num; int a,b; scanf("%d%d%d",&price[i],&level[i],&num); for(int j=1;j<=num;j++) { scanf("%d%d",&a,&b); cun[a][++cun[a][0]]=i; bian[a][i]=b; } }}int nowlevel;int min=0x7fffffff;void dfs( int x,int sum,int mil,int mal ){ if(mal-mil>M||sum>=min) return ; if(x==1) { if(sum<min) min=sum; return; } for(int i=1;i<=cun[x][0];i++) { int c=cun[x][i]; dfs(c,sum+bian[x][c],mi(level[c],mil),ma(level[c],mal)); }}int main(){ int sum; put(); for(int i=1;i<=N;i++) { sum=price[i]; nowlevel=level[i]; dfs(i,sum,nowlevel,nowlevel); } printf("%d\n",min);}
0 0
- poj1062解题报告
- poj1062解题报告:
- poj1062解题报告(Dijskstra)
- 2011.11.10 poj1062,poj2253,poj1125 单源最短路径 解题报告
- POJ1062 昂贵的聘礼 ACM解题报告(dijkstra+枚举)
- POJ1062 昂贵的聘礼 解题报告【最短路/SPFA】
- 吐槽poj1062(不是解题报告,没有代码,仅仅吐糟)
- poj1062
- poj1062
- poj1062
- POJ1062
- poj1062
- poj1062
- poj1062
- poj1062
- POJ1062
- POJ1062
- poj1062
- 华为面试题:识别有效的ip地址和子网掩码并分类 C语言源码
- Android官方技术文档翻译——新构建系统概述
- 面试珠玑 大小端详解
- Linux下 检测在使用的IP
- Paint类常用方法
- poj1062解题报告
- 一次解决ORA-12560的经历
- 设计模式之桥接模式(Bridge)--结构模型
- hollister soldes the police and hospital logistics park in the lounge driver found 812 small ball
- sql server中的五种数据类型
- 面试珠玑 C语言实现字符串倒序
- django接收模板变量并拆分
- 某日期列天数加一
- MySQL常用命令