Travel
2012-03-03 17:23
155 查看
Description
Yicou经常旅游,但很可惜他不太喜欢旅游(人在江湖,身不由己阿~)所以,每次yicou到了一个景点以后,就会通过景点地图,寻找最少时间走出景区的路线。
这天,yicou一群人,在FJ的带领下去旅游,不过yicou并不关心去的是哪里,他只想着赶快走出去回去编程。在拿到地图的时候,他惊奇的发现。整个景区竟然是一颗高度为h完全二叉树!最后一行的叶结点全都连接着出口!而入口正好连接着是树根。每个点都只能走向其两个子结点。并且这张地图很好的标出了,每个景点观光时间(从0到99)(路程时间忽略不计)。现在,yicou需要你帮助他寻找从入口到某一出口的最短时间。
不过,在你算完最短时间以后,突然发现,那是一张过期的地图!由于小鱼儿和花无缺的移花接木的影响,很多景点的观光时间变了…(假冒伪略害人不浅阿~)之后你又在小卖部买到了后面一次的更新数据。刚算完新的最短时间,哈哈~,发现还不是最新的,又买了一次更新…一直买了m次,才全都是最新的,而这最后一次算出的才是yicou想要的时间。
不过,你为了向yicou说明,你为了帮他付出了很多努力,yicou需要请你吃饭!你需要把过程中算得的那m次不算数的最短时间,和最后一次算数的最短时间,都给yicou看。
举例:
1
2 5
3 4 6 7
最短为1-2-3 为6
后来第3行第1个数据变为10
1
2 5
10 4 6 7
最短为1-2-4 为7
后来第3行第2个数据变为10
1
2 5
10 10 6 7
最短为1-5-6 为12
再后来第2行第2个数据变为6
1
2 6
10 10 6 7
最短为1-6-6 为13
Input
There are many tests, but only one case in each test.
The first line contain a number h (1<= h <= 16) 代表完全二叉树的高度
Next h lines, each has 2^i (0<=i Next line contain a number m (0<= m <= 10000) 代表更新次数
Next m lines each contains i, j, k means: the ith line’s jth data changes to k
数据准保合乎出题规范,不用判错。
Output
m+1 lines each means a min time
Sample Input
3
1
2 5
3 4 6 7
3
3 1 10
3 2 10
2 2 6
Sample Output
6
7
12
13
View Code
Yicou经常旅游,但很可惜他不太喜欢旅游(人在江湖,身不由己阿~)所以,每次yicou到了一个景点以后,就会通过景点地图,寻找最少时间走出景区的路线。
这天,yicou一群人,在FJ的带领下去旅游,不过yicou并不关心去的是哪里,他只想着赶快走出去回去编程。在拿到地图的时候,他惊奇的发现。整个景区竟然是一颗高度为h完全二叉树!最后一行的叶结点全都连接着出口!而入口正好连接着是树根。每个点都只能走向其两个子结点。并且这张地图很好的标出了,每个景点观光时间(从0到99)(路程时间忽略不计)。现在,yicou需要你帮助他寻找从入口到某一出口的最短时间。
不过,在你算完最短时间以后,突然发现,那是一张过期的地图!由于小鱼儿和花无缺的移花接木的影响,很多景点的观光时间变了…(假冒伪略害人不浅阿~)之后你又在小卖部买到了后面一次的更新数据。刚算完新的最短时间,哈哈~,发现还不是最新的,又买了一次更新…一直买了m次,才全都是最新的,而这最后一次算出的才是yicou想要的时间。
不过,你为了向yicou说明,你为了帮他付出了很多努力,yicou需要请你吃饭!你需要把过程中算得的那m次不算数的最短时间,和最后一次算数的最短时间,都给yicou看。
举例:
1
2 5
3 4 6 7
最短为1-2-3 为6
后来第3行第1个数据变为10
1
2 5
10 4 6 7
最短为1-2-4 为7
后来第3行第2个数据变为10
1
2 5
10 10 6 7
最短为1-5-6 为12
再后来第2行第2个数据变为6
1
2 6
10 10 6 7
最短为1-6-6 为13
Input
There are many tests, but only one case in each test.
The first line contain a number h (1<= h <= 16) 代表完全二叉树的高度
Next h lines, each has 2^i (0<=i Next line contain a number m (0<= m <= 10000) 代表更新次数
Next m lines each contains i, j, k means: the ith line’s jth data changes to k
数据准保合乎出题规范,不用判错。
Output
m+1 lines each means a min time
Sample Input
3
1
2 5
3 4 6 7
3
3 1 10
3 2 10
2 2 6
Sample Output
6
7
12
13
View Code
#include <stdio.h> #include<math.h> #include<string.h> #define min(a,b) (((a) < (b)) ? (a) : (b)) #define mx (1024*64+2) int a[mx],l; int f[mx]; int fan(int i) { if (i>=l) return a[i]; else if(f[i]!=-1) return f[i]; else return f[i]=min(fan(2*i),fan(2*i+1))+a[i]; } int main() { int n,i,j; int m,x,y,num,c; scanf("%d",&n); num=pow(2,n); for(i=1;i<num;i++) scanf("%d",&a[i]); memset(f,-1,sizeof(f)); l=pow(2,n-1); for(i=l;i<num;i++) f[i]=a[i]; printf("%d\n",fan(1)); scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d%d%d",&x,&y,&c); n=pow(2,x-1)+y-1; f +=c-a ; a =c; if(n>=l) f =a ; n=n/2; while( n>=1 && f !=min(f[2*n],f[2*n+1])+a ) { f =min(f[2*n],f[2*n+1])+a ; n=n/2; } printf("%d\n",f[1]); } return 0; }
相关文章推荐
- Travel From San Francisco to Las Vegas by Motorcycle
- 探索ASP.NET中Tailspin TravelUI层奥秘
- Travel Week
- hdu 2433 Travel 最短路+预处理
- hdu 4284 Travel
- 【最大子区间和】旅游路线(travel.pas/c/cpp)
- UVA-10816 - Travel in Desert(dijkstra)
- HDU 4284 Travel
- hdu 4284 Travel(floyd + TSP)
- [Usaco2009 Jan]安全路经Travel dijkstra + 并查集
- Pat(Advanced Level)Practice--1030(Travel Plan)
- travel the binary tree by level 5 ( from down to top and from left to right every level )
- LightOJ 1221 Travel Company(贝尔曼最短路判负环)
- hdu -4284 Travel(状态压缩)
- [BZOJ 1576] [Usaco2009 Jan] 安全路经Travel 【树链剖分】
- BZOJ1576 [Usaco2009 Jan]安全路经Travel
- [Leetcode] Binary Tree PosterOrder Travel
- HDU5380——单调队列——Travel with candy
- hdu 5441 Travel(并查集)
- hdu 5441 Travel(离线操作+并查集路径压缩)