uva_10201 adventure_in_moving dp
来源:互联网 发布:网络yy骗小钱 编辑:程序博客网 时间:2024/06/04 19:05
//uva_10201 adventure_in_moving //输入://1////500//100 999//150 888//200 777//300 999//400 1009//450 1019//500 1399//////1 为输入数据的次数 和500之间有空格 500为路径的长度//接下来7行 每行有2个数字 第一个数字表示加油站的位置 第二个数表示加油站加一升油的钱//输出://450550////为450550最小的花费//题目大意://车从0开始到输入的结束位置(上次输入为500)开始时车上有100L汽油 1L汽油可以行使1公里//车最多一次可以装200L汽油 可以在输入的加油站位置加油 则从0位置行使到终点位置时车上还至少有//100L汽油 则至少需要多少钱//解题思路 ://动态规划 用dp[i][j]表示 在第i个加油站 车上还留有jL的汽油最少需要的钱 // d[i]表示第i个加油站的位置 p[i]表示第i个加油站的价格// 则在第i个加油站有两种情况// 不在第i个加油站加油 dp[i][j]=dp[i-1][j+d[i]-d[i-1]];(0<=j+d[i]-d[i-1]<=200)// 在第i个加油站加油kL(0=<K<=j) dp[i][j]=dp[i-1][j-k+d[i]-d[i-1]]+k*p[i]; (j-k+d[i]-d[i-1])// 则状态转换方程为 dp[i][j]=min{dp[i-1][j+d[i]-d[i-1]],dp[i-1][j-k+d[i]-d[i-1]]+k*p[i]}(0<=k<=j)#include <iostream>#include <sstream>#include <algorithm>using namespace std;const int STATIONMAX=110;const int GASMAX=210;int main(int argc,char *argv[]){ int times,length,dp[STATIONMAX][GASMAX],d[STATIONMAX],p[STATIONMAX],stationnum; int INF=(1<<30); string line; cin>>times; while(times--) { stationnum=1; cin>>length; cin.ignore(1000,'\n'); while(getline(cin,line)&&(line.length()>0)) { istringstream iss(line); iss>>d[stationnum]>>p[stationnum]; stationnum++; } stationnum--; for(int i=0;i<=stationnum;i++) for(int j=0;j<=200;j++) dp[i][j]=INF; d[0]=0;//0号站台的位置为0位置 dp[0][100]=0; for(int i=1;i<=stationnum;i++) for(int j=0;j<=200;j++) { int dist=d[i]-d[i-1]; if(j+dist>=0&&j+dist<=200) dp[i][j]=dp[i-1][j+dist]; for(int k=0;k<=j;k++) { if(j+dist-k>=0&&j+dist-k<=200) { if(dp[i][j]>(dp[i-1][j+dist-k]+k*p[i])) dp[i][j]=dp[i-1][j+dist-k]+k*p[i]; } } } if(length-d[stationnum]+100>200||dp[stationnum][length-d[stationnum]+100]==INF) cout<<"Impossible"<<endl; else cout<<dp[stationnum][length-d[stationnum]+100]<<endl; if(times) cout<<endl; }}
在做这道题的时候发现自己不怎么细心 因为题目要求每两个答案之间是要有一个空行的 而且最后一个答案不能有空行 否则就会判错
0 0
- uva_10201 adventure_in_moving dp
- uva_10201 - Adventures in Moving - Part IV (普通DP)
- dp
- dp
- dp
- 【DP】
- dp
- dp
- DP
- DP
- DP
- DP
- DP
- dp
- DP
- dp
- DP
- DP
- excel导入导出需要的jar包---maven
- 应用程序编译进安桌系统
- vs2010 中 qt窗口的提升
- ubuntu apt-get 下载软件ERROR的问题
- Cocos2D-x 入门(1)
- uva_10201 adventure_in_moving dp
- Android 通过Base64上传图片到服务器
- 简单工厂/工厂/抽象工厂模式(创建类)
- redhat6.2安装oracle11g数据库
- nginx代理配置403
- OpenLayers开发:增加删除控件
- wiki的选择 && DokuWiki的安装
- 由于socket文件位置错误导致数据库
- ThinkPHP写数组插入与获取最新插入数据ID实例