UVA - 10201 Adventures in Moving - Part IV
2015-03-12 17:35
309 查看
状态转移很明显
遗憾只在poj上通过了。。。
遗憾只在poj上通过了。。。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAXN=110; int main(){ int distance,dp[MAXN][MAXN*2],T,stations,station[MAXN][2]; char input[30]; scanf("%d",&T); while(T--){ stations=0; memset(dp,0X7F,MAXN*MAXN*8); int MAX=dp[0][0],ans=MAX; scanf("%d",&distance); getchar(); while(gets(input)&&input[0]!='\0'){ sscanf(input,"%d %d",&station[stations][0],&station[stations][1]); if(station[stations][0]>distance) continue; if(station[stations][0]==station[stations-1][0]&&station[stations][1]>station[stations-1][1]) stations--; else if(station[stations][0]==station[stations-1][0]&&station[stations][1]<station[stations-1][1]){ stations--; station[stations][1]=station[stations+1][1]; } stations++; } /*for(int i=0;i<stations;i++) printf("%d %d\n",station[i][0],station[i][1]); puts(""); */ if(stations==0){ if(distance>0) printf("Impossible\n"); else printf("0\n"); continue; } if(station[0][0]>100){ printf("Impossible\n"); continue; } for(int i=1;i<stations;i++){ if(station[i][0]-station[i-1][0]>200){ printf("Impossible\n"); goto next; } } if(station[stations-1][0]+100<distance){ printf("Impossible\n"); continue; } for(int i=200;i>=0;i--){ if(i<100-station[0][0]) break; dp[0][i]=(i-100+station[0][0])*station[0][1]; } for(int i=1;i<stations;i++){ for(int j=200;j>=0;j--){ for(int t=station[i][0]-station[i-1][0];t<=200;t++){ if((j-(t-station[i][0]+station[i-1][0]))<0) break; dp[i][j]=min(dp[i][j],dp[i-1][t]+(j-(t-station[i][0]+station[i-1][0]))*station[i][1]); } } } //printf("%d",ans); for(int i=0;i<=200;i++){ if(i-(distance-station[stations-1][0])>=100) ans=min(ans,dp[stations-1][i]); } if(ans==MAX) printf("Impossible\n"); else printf("%d\n",ans); next:{} if(T) printf("\n"); } return 0; }
相关文章推荐
- uva10201 - Adventures in Moving - Part IV
- UVA 10201 Adventures in Moving - Part IV(动态规划)
- UVA 10201 Adventures in Moving - Part IV(dp)
- UVA 10201 Adventures in Moving - Part IV 车站加油 dp
- Uva 10201 Adventures in Moving - Part IV
- UVa 10201 Adventures in Moving - Part IV
- uva_10201 - Adventures in Moving - Part IV (普通DP)
- UVA - 10201 Adventures in Moving - Part IV
- uva 10201 - Adventures in Moving - Part IV(dp)
- uva 10201 Adventures in Moving - Part IV
- UVA 10201 Adventures in Moving - Part IV
- uva 10201 - Adventures in Moving - Part IV
- uva10201 - Adventures in Moving - Part IV(01背包)
- UVA - 10201 Adventures in Moving - Part IV
- uva10201(Adventures in Moving - Part IV)
- Adventures in Moving - Part IV - UVa 10201 dp
- uva 10201 Adventures in Moving - Part IV
- UVA - 10201 Adventures in Moving - Part IV
- UVA10201 - Adventures in Moving - Part IV
- uva10201 - Adventures in Moving - Part IV(动归)