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 |
方程是对的,我用下面的代码AC了In Reply To:感觉方程好像不是这样的呢 Posted by:frkstyc at 2005-07-10 23:33:18 //用~划出了增加的代码 //#include <stdio.h> #include<iostream> //#include<fstream> using namespace std; int f[102][201],i,j,k,d,dis[102],sta[102],pri[102],n,inf = 1000000000,tmp; int main() { // freopen("in.txt","r",stdin); // freopen("out2.txt","w",stdout); // scanf("%d",&d); // ifstream cin("in.txt"); // ofstream cout("out2.txt"); cin>>d; n = 1; while(cin>>sta[n]>>pri[n] && sta[n]<=d) ~~~~~~~~~ n++; sta[n] = d; sta[0] = 0; for(i=1; i<=n; i++) { dis[i]=sta[i]-sta[i-1]; if(dis[i]>200 || (i==1||i==n)&&dis[i]>100 || n==1 && dis[i]>0) ~~~~~~~~~~~~~~~~~~~ { cout<<"Impossible"<<endl; return 0; } for(j=0; j<=200; j++) { f[i][j] = inf; } } f[1][100-sta[1]] = 0; for(i=1; i<n; i++) { for(j=0; j<=200; j++) { if(f[i][j]!=inf) { for(k=0; k<=200-j; k++) { if(j+k>=dis[i+1] && f[i][j]+k*pri[i]<f[i+1][j+k-dis[i+1]]) { f[i+1][j+k-dis[i+1]] = f[i][j]+k*pri[i]; } } } } } cout<<f[n][100]<<endl; // printf("%d\n",f[n][100]); // cin.close(); // cout.close(); // fclose(stdin); // fclose(stdout); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator