| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
WA!!help!!!动规哪里出错了啊?#include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <math.h> int N,X,Y,max; int feet; struct board { int x1,x2,height; int left; int right; }; int mycompare(const void *p1,const void *p2) { board *pp1=(board*)p1; board *pp2=(board*)p2; if (pp1->height == pp2->height ) return (pp1->x1-pp2->x1); return (pp1->height-pp2->height); } int min(int a,int b) { if (a<b) return a; else return b; } board list[1001]; int result [1001][2];//建立动规数组 void main() { int n; scanf("%d",&n); while (n--) { scanf("%d%d%d%d",&N,&X,&Y,&max); for (int i=0;i<N;i++) { scanf ("%d%d%d",&(list[i].x1),&(list[i].x2),&(list[i].height)); } qsort(list,N,sizeof (board),mycompare); result [0][0]=0;result[0][1]=0; for (int j=1;j<N;j++) { if (list[j].height==list[0].height) { result[j][0]=0; result[j][1]=0; } else { result[j][0]=pow(2,30); result[j][1]=pow(2,30); } } for (int c=1;list[c].height==list[0].height;c++); for (int k=c;k<N;k++) { int a,b; for ( a=k-1;a>=0;a--)//依次给每个板左右两端赋值 { if (list [k].height-list[a].height<=max&&list[k].x1>=list[a].x1 &&list[k].x1<=list[k].x2) { result[k][0]=min(result[a][0]+list[k].x1-list[a].x1, result[a][1]+list[a].x2-list[k].x1); break; } } if (a==-1&&list[k].height<=max) result[k][0]=0; for ( b=k-1;b>=0;b--) { if (list [k].height-list[b].height<=max&&list[k].x2>=list[b].x1 &&list[k].x2<=list[b].x2) { result[k][1]=min(result[b][0]+list[k].x2-list[b].x1, result[b][1]+list[b].x2-list[k].x2); break; } } if (b==-1&&list[k].height<=max) result[k][1]=0; } for (int d=N-1;d>=0;d--) { if (list[d].x1<=X&&list[d].x2>=X) { feet=Y+min(result[d][0]+X-list[d].x1,result[d][1]+list[d].x2-X); break; } } if (d==-1) feet=Y; printf("%d\n",feet); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator