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 |
DP的第2层循环的范围优化下也许就可以了In Reply To:Help Me please~~ Posted by:1588760 at 2007-01-18 18:27:33 > Why The Time Limit?? > #include <Stdio.h> > > #define MAX_N 100000 > #define Mu .1e11 > > int data[101]; > float dina[MAX_N][MAX_N]; > > int main() > { > FILE *fi; > fi = stdin;; > int n,m; > int i,j; > int num[MAX_N]; > float prime,price[MAX_N]; > int y; > while(1){ > fscanf(fi,"%d %d",&n,&m); > if(n == 0 && m == 0 )break; > for(i = 0; i < n; i++){ > > fscanf(fi,"%d",&data[i]); > > } > for(i = 1; i <= m; i++){ > > fscanf(fi,"%d %f",&num[i],&prime); > > price[i] = prime; > > } > for(i = 0; i <= n; i++){ > for(j = 0; j <= m; j++){ > dina[0][j] = 0; > dina[i][0] = Mu; > } > } > y = 0; > for(i = 1; i <= n; i++,y++){ > for(j = 1; j <= m; j++){ > if(data[y] == num[j]){ > if(price[j] + dina[i - 1][j - 1] > price[j] + dina[i][j - 1]) > dina[i][j] = price[j] + dina[i][j - 1]; > else > dina[i][j] = price[j] + dina[i - 1][j - 1]; > }else{ > dina[i][j] = dina[i][j - 1]; > } > } > } > if(dina[n][m] == Mu){ > printf("Impossible\n"); > }else{ > printf("%.2f\n",dina[n][m]); > } > } > return 0; > } > > > > > > > Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator