uva 10201 Adventures in Moving - Part IV
来源:互联网 发布:无敌9号 知乎 编辑:程序博客网 时间:2024/05/16 05:33
题意:有t组测试数据,每组数据的开始表示终点的位置,然后接下来有若干对数x,y,x表示沿途的加油的位置,y表示每升油的价格。每组数据间有一个空行。开始的时候在位置0,油箱里有100升汽油,问最后到达终点,且油箱里还有100升汽油所需的最小花费是多少。
在做这题时候,有两个误区,WA了很多次,一是错认为终点一定在加油站上,二是认为给我们的加油站的位置不会超过终点。但实际上是会超过的,也就是说我们判断这组测试数据结束只能通过最后的那个空行。
#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define INF 1<<30const int N=305;int n,m,map[N][N*2];bool vis[N][N*2];struct node{ int x,y; void fun(int a,int b){x=a;y=b;}}gas[N];int dp(int,int);int main(){ //freopen("in.txt","r",stdin); int t,t_cnt=0; scanf("%d",&t); while(t--) { n=1; memset(map,0,sizeof(map)); memset(vis,0,sizeof(vis)); memset(gas,0,sizeof(gas)); char str[100]; scanf("%d",&m); getchar(); while(gets(str)) { if(strlen(str)) {sscanf(str,"%d%d",&gas[n].x,&gas[n].y);n++;} else break; } int temp=dp(0,100); if(t_cnt++!=0) puts(""); if(temp!=INF) printf("%d\n",dp(0,100)); else puts("Impossible"); } return 0;}int dp(int x,int y){ bool &flag=vis[x][y]; int &res=map[x][y]; if(flag) return res; else if(m-gas[x].x<=y-100) { flag=1;res=0; return res; } else { res=INF; for(int i=x+1;i<n;i++) { int remain=y-(gas[i].x-gas[x].x); if(remain>=0) { for(int j=0;j+remain<=200;j++) { int temp=dp(i,j+remain); if(temp!=INF) res=min(res,temp+j*gas[i].y); } } else break; } flag=1;return res; }}
- uva 10201 Adventures in Moving - Part IV
- UVA 10201 Adventures in Moving - Part IV
- UVA 10201 Adventures in Moving - Part IV
- UVA 10201 Adventures in Moving - Part IV
- uva 10201 Adventures in Moving - Part IV
- UVA - 10201 Adventures in Moving - Part IV
- uva 10201 - Adventures in Moving - Part IV
- UVA - 10201 Adventures in Moving - Part IV
- UVA - 10201 Adventures in Moving - Part IV
- UVA - 10201 Adventures in Moving - Part IV
- uva 10201 Adventures in Moving - Part IV
- uva--UVA 10201Adventures in Moving - Part IV
- Adventures in Moving - Part IV+uva+dp
- UVA 10201 Adventures in Moving - Part IV(dp)
- uva 10201 - Adventures in Moving - Part IV(dp)
- UVA 10201 Adventures in Moving - Part IV 车站加油 dp
- Adventures in Moving - Part IV - UVa 10201 dp
- UVA 10201 Adventures in Moving - Part IV(动态规划)
- lighttpd io 多路复用分析
- mysql大数据量访问操作记录
- MyEclipse取消Show in Breadcrumb的方法
- win7下127.0.0.1不能访问,而localhost可以的解决
- 禅...!
- uva 10201 Adventures in Moving - Part IV
- [解决方案]除非Microsoft FTP 服务(FTPSVC)正在运行,否则无法启动FTP站点。服务目前已停止
- DSP零碎知识备忘
- 【Android游戏开发十一】手把手让你爱上Android sdk自带“9妹”(9patch 工具),让Android游戏开发更方便!
- 关于Apache的单IP多域名和二级域名的配置
- OpenMP中数据属性相关子句详解(2):shared/default/copyin/copyprivate子句的使用
- MyEclipse无法自动编译
- 编程技巧:使用 do {} while (false) 来避免缩进
- 三十分钟掌握STL