TYVJ 公路乘车 完全背包(水题)

描述 Description

一个特别的单行街道在每公里处有一个汽车站。顾客根据他们乘坐汽车的公里使来付费。例如样例的第一行就是一个费用的单子。
 
没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1<=n<=100),它可以通过无限次的换车来完成旅程。最后要求费用最少。

输入格式 InputFormat

第一行十个整数分别表示行走1到10公里的费用(<=500)。注意这些数并无实际的经济意义,即行驶10公里费用可能比行驶一公里少。
第二行一个整数n表示,旅客的总路程数。

输出格式 OutputFormat

仅一个整数表示最少费用。

样例输入 SampleInput

12 21 31 40 49 58 69 79 90 101

15

样例输出 SampleOutput

147

题目意思别理解错了,走一公里12,两公里32...是分别独立的
一开始我理解成走两公里是建立在走完一公里的基础上
理解好意思就是一个裸完全背包了,容量是旅程的公里数,花费是坐车走的公里数,价值是做相应公里数的坐车的费用,每个相应的公里数可以无限取,求恰好完成的旅程的最少车费

这里要注意下初始化,详见《背包九讲》

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 #include<iostream>
 6 using namespace std;
 7 int dp[600];
 8 int v[105];
 9 int main()
10 {
11     int i,j,m;
12     memset(dp,0x3f3f3f3f,sizeof(dp));
13     memset(v,0,sizeof(v));
14
15     for(i=1;i<=10;i++)
16         scanf("%d",&v[i]);
17     scanf("%d",&m);
18
19     dp[0]=0;
20     for(i=1;i<=10;i++)
21         for(j=i;j<=m;j++)
22             dp[j]=min(dp[j],dp[j-i]+v[i]);
23
24     printf("%d\n",dp[m]);
25     return 0;
26 }

TYVJ 公路乘车 完全背包(水题),布布扣,bubuko.com

时间: 2024-10-22 19:33:19

TYVJ 公路乘车 完全背包(水题)的相关文章

01背包水题篇之 HDU2955——Robberies

原来是想dp[i],表示不被抓概率为i所能抢到的最大钱(概率1-100) 后来看了别人的博客是dp[i]表示抢了i钱最大的不被抓概率,嗯~,弱菜水题都刷不动. 那么状态转移方程就是 dp[i]=max(dp[i],dp[i-money]*p),初始化dp(0~maxn)为0,dp[0]=1(1毛钱都没抢你抓个毛线啊,哥是良民~) 又是贴代码环节~ <span style="font-size:18px;">#include<iostream> #include&

01背包水题篇之HDU3466——Proud Merchants

这是个好题,菜鸟刚学dp,这题把我以前的想法全都给完完全全的颠覆了.其实是自己没了解无后效性的概念. 然后我去开开心心滴跑去问队长:"队长,队长,怎么理解动归的无后效性啊???" 学长很深沉滴对我说:"做多了就会了" "噢噢"(好吧) 然后学长又补了句:"能构成有向无环图的都能用DP搞." 我心里想:"队长就知道搞妹~~~." 默默去翻小白书看看DAG去了. 为了搞清楚这题怎么写,操了度娘千百遍,还是没搞定

01背包水题篇之HDU1864——最大报销额

这个题目好果的01,只要把每个数乘以100,就能解决下标的问题了 继续贴代码环节(自己的代码好丑啊~~~) <span style="font-size:18px;">#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #define maxn 3100000 using namespace std; int dp[maxn]; i

【一堆的背包水题】沉迷于刷水无可救药~

我在干嘛,连普及组都不会考这种题.以三四分钟一道题的速度混了一下BZOJ的题目数量. BZOJ1606: [Usaco2008 Dec]Hay For Sale 购买干草 裸的01背包. 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int MAXN=5000+5; 4 const int MAXC=50000+50; 5   6 int main() 7 { 8     int c,h,v[MAXN],f[MAXC]; 9

hdu2955Robberies 01背包水题

//给出每个银行的钱数和被抓的概率, //问在被抓概率小于p的情况下得到的钱数最多为多少 //直接以钱数为容量,以(1-pi)为为价值01背包就行 #include<cstdio> #include<cstring> #include<iostream> using namespace std ; const int maxn = 110 ; const int maxm = maxn*maxn ; double dp[maxm] ; int main() { int

NYOJ 49 开心的小明(经典01背包水题)

开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行".今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元.于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要.他还从因特网上查到了每件物品的价格(都是整数元).

TYVJ 采药 0-1背包(水题)

背景 Background NOIP2005复赛普及组第三题 描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大.” 如果你是辰辰,你能完成这个任务

Tyvj P1015 公路乘车 (DP)

 描述 Description 一个特别的单行街道在每公里处有一个汽车站.顾客根据他们乘坐汽车的公里使来付费.例如样例的第一行就是一个费用的单子. 没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1<=n<=100),它可以通过无限次的换车来完成旅程.最后要求费用最少. 输入格式 InputFormat 第一行十个整数分别表示行走1到10公里的费用(<=500).注意这些数并无实际的经济意义,即行驶10公里费用可能比行驶一公里少. 第二行一个整数n表示,旅客的总路程数. 输出格

公路乘车

                                              公路乘车 描述 Description 一个特别的单行街道在每公里处有一个汽车站.顾客根据他们乘坐汽车的公里使来付费.例如样例的第一行就是一个费用的单子. 没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1<=n<=100),它可以通过无限次的换车来完成旅程.最后要求费用最少. 输入格式 InputFormat  第一行十个整数分别表示行走1到10公里的费用(<=500).注意这些数并无实际