Adventures in Moving - Part IV

题意:

汽车邮箱容量200升,最初有100升油,要求到达终点油箱中的油不少于100升的最小花费,不能到达终点输出Impossible.

汽车走1单位距离消耗1升油。

输入t组数据

输入n表示要求从起点到距离为n的点

输入若干个加油站的a,b,表示加油站距离起点的距离和每升油的价格;

代码:

//dp[i][j]=min(dp[i][j],dp[i-1][j+dis-k]+k*w),dp[i][j]表示到达
//i加油站时还剩j升油,dis表示i到i-1的距离,k(0<=k<=j)表示在i
//加油站买多少油,最后要求dp[m][100+n-id[m]]!=inf.
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f3f;
int dp[][],id[],w[];
char s[];
int main()
{
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
getchar();
memset(dp,inf,sizeof(dp));
dp[][]=;
int cnt=;
while(gets(s)!=NULL&&s[]!='\0'){
cnt++;
sscanf(s,"%d %d",&id[cnt],&w[cnt]);
if(id[cnt]>n) cnt--;
}
id[]=;
for(int i=;i<=cnt;i++){
int dis=id[i]-id[i-];
for(int j=;j<=;j++){
for(int k=;k<=j;k++)
if(j+dis-k<=)
dp[i][j]=min(dp[i][j],dp[i-][j+dis-k]+k*w[i]);
}
}
if(n-id[cnt]>||dp[cnt][+n-id[cnt]]==inf) printf("Impossible\n");
else printf("%d\n",dp[cnt][+n-id[cnt]]);
if(t) printf("\n");
}
return ;
}
/*
1
500
100 999
150 888
200 777
300 999
400 1009
450 1019
500 1399
*/

UVA 10201 DP的更多相关文章

  1. UVA 10201 Adventures in Moving - Part IV(dp)

    Problem A: Adventures in Moving - Part IV To help you move from Waterloo to the big city, you are co ...

  2. uva 1401 dp+Trie

    http://uva.onlinejudge.org/index.php? option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. uva 11404 dp

    UVA 11404 - Palindromic Subsequence 求给定字符串的最长回文子序列,长度一样的输出字典序最小的. 对于 [l, r] 区间的最长回文串.他可能是[l+1, r] 和[ ...

  4. uva 11552 dp

    UVA 11552 - Fewest Flops 一个字符串,字符串每 k 个当作一组,组中的字符顺序能够重组.问经过重组后改字符串能够编程最少由多少块字符组成.连续的一段字符被称为块. dp[i][ ...

  5. uva 10271 (dp)

    题意:有n个数据,给定k,要从中选出k+8个三元组(x,y,z,其中x<=y<=z),每选一次的代价为(x-y)^2,求最小代价和. [解题方法] 将筷子按长度从大到小排序 排序原因: 由 ...

  6. UVa 12063 (DP) Zeros and Ones

    题意: 找出长度为n.0和1个数相等.没有前导0且为k的倍数的二进制数的个数. 分析: 这道题要用动态规划来做. 设dp(zeros, ones, mod)为有zeros个0,ones个1,除以k的余 ...

  7. UVA 5875 DP

    题意:给你一堆二维点,每个点有一些分数. 现在要从点(0 , 0 )出发,只能从标号小的点走到大的点,每个人有一个走的距离的限制,问最后能拿到的最高的分数,当然这个人从(0 , 0)出发还得回到( 0 ...

  8. UVA - 11552 DP 划分

    每k个字符划分一个组,该组内字符顺序可以任意重排,定义块为最长的连续的字符子串,求长度为m*k的字符串中最少的块的数目 设\(dp[i][j]\):前\(i\)组中第\(i\)组结尾为\(j\)的最优 ...

  9. UVA - 11584 DP 最少线段覆盖

    题意:用最少的不可交线段覆盖整个区间,求该最小值 课上摸鱼的时候没注意到题意的转换,写了没啥卵用的回文中心最长枚举,所以代码里的st和h/h2是几乎没用的 注意状态转移的时候不要只用最长线段去转移,这 ...

随机推荐

  1. Linux系统负载查询

    查询Linux系统负载情况,一般需要了解三个方面的信息: 1.Linux系统配置.如Linux版本号.CPU.内存.网络.磁盘等: 2.收集系统负载信息的手段.常用的工具包有sysstat和procp ...

  2. C指针函数中的局部变量返回

    所谓指针函数其实就是  :一个函数的返回值为指针. 指针函数定义:返回类型标识符*  函数名(形参列表){函数体} eg:   int*  fun1(int n){} 指针函数和局部变量返回解析: 简 ...

  3. 【机器学习】线性回归python实现

    线性回归原理介绍 线性回归python实现 线性回归sklearn实现 这里使用python实现线性回归,没有使用sklearn等机器学习框架,目的是帮助理解算法的原理. 写了三个例子,分别是单变量的 ...

  4. Halcon介绍和下载安装视频教程

    ------------------------Halcon,Visionpro高清视频教程,点击下载视频--------------------------

  5. canvas学习(二):渐变与曲线的绘制

    canvas学习(二):渐变与曲线的绘制 一:createLinearGradient()线性渐变: 二:createLinearGradient() 放射状/圆形渐变: 三:createPatter ...

  6. Hero In Maze(BFS广搜)

    Description 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了, ...

  7. 冲刺ing-1

    冲刺一 1.第一天的工作分配: 姓名 任务分工 吴伟华(队长) 布置团队任务,发表汇总博客及第一次冲刺博客 蔺皓雯 讨论任务分配 杨池宇 讨论任务分配 鲁婧楠 讨论任务分配 曾茜 讨论任务分配 蔡晨旸 ...

  8. LintCode-38.搜索二维矩阵 II

    搜索二维矩阵 II 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每一列的整数从上到下是排序的. 在每一行或每一列中没有重复 ...

  9. PokeCats开发者日志(十二)

      现在是PokeCats游戏开发的第六十一天的晚上,终于拿到软著权登记证书了!   看来易版权确实是个值得信赖的代办机构呢,400块花的不冤.

  10. Thinkphp5获取数据库数据到视图

    这是学习thinkhp5的基础篇笔记. 本文主要讲怎么配置数据库链接,以及查询数据库数据,并且最后将数据赋给视图. 数据库配置: thinkphp5的数据库配置默认在conf下的database.ph ...