BZOJ2020: [Usaco2010 Jan]Buying Feed II
【传送门:BZOJ2020】
简要题意:
约翰开车回家,遇到了双十一节,那么就顺路买点饲料吧。回家的路程一共有E 公里,这一路上会经过N 家商店,第i 家店里有Fi 吨饲料,售价为每吨Ci 元。约翰打算买K 吨饲料,他知道商家的库存是足够的,至少所有店的库存总和不会少于K。除了购买饲料要钱,运送饲料也是要花油钱的,约翰的卡车上如果装着X 吨饲料,那么他行驶一公里会花掉X 元,行驶D 公里需要DX 元。已知第i 家店距约翰所在的起点有Xi 公里,那么约翰在哪些商店买饲料运回家,才能做到最省钱呢?
输入格式:
• 第一行:三个整数K,E 和N,1 ≤ K ≤ 100, 1 ≤ E ≤ 350, 1 ≤ N ≤ 100
• 第二行到第N + 1 行:第i + 1 行有三个整数Xi,Fi 和Ci,0 < Xi < E; 1 ≤ Fi ≤ 100; 1 ≤Ci ≤ 10^6
输出格式:
• 单个整数:表示购买和运送饲料的最小费用之和
样例输入:
2 5 3
3 1 2
4 1 2
1 1 1
样例输出:
7
样例解释:
在离家较近的两家商店里各购买一吨饲料,则花在路上的钱是1 + 2 = 3,花在店里的钱是2 + 2 = 4
题解:
一眼贪心题,但是不会打,只好弄个DP水了过去
参考代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
using namespace std;
struct node
{
int x,f,c;
}a[];
int cmp(const void *xx,const void *yy)
{
node n1=*(node *)xx;
node n2=*(node *)yy;
if(n1.x>n2.x) return ;
if(n1.x<n2.x) return -;
return ;
}
int f[][];
int main()
{
int k,e,n;
scanf("%d%d%d",&k,&e,&n);
for(int i=;i<=n;i++) scanf("%d%d%d",&a[i].x,&a[i].f,&a[i].c);
qsort(a+,n,sizeof(node),cmp);
memset(f,,sizeof(f));
for(int i=;i<=a[].f;i++) f[][i]=a[].c*i;
for(int i=;i<=n;i++)
{
for(int p=;p<=k;p++)
{
for(int q=;q<=a[i].f;q++)
{
if(p+q>k) break;
f[i][p+q]=min(f[i][p+q],f[i-][p]+(a[i].x-a[i-].x)*p+q*a[i].c);
}
}
}
printf("%d\n",f[n][k]+(e-a[n].x)*k);
return ;
}
BZOJ2020: [Usaco2010 Jan]Buying Feed II的更多相关文章
- 2020: [Usaco2010 Jan]Buying Feed, II
2020: [Usaco2010 Jan]Buying Feed, II Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 220 Solved: 162[ ...
- 【BZOJ】2020: [Usaco2010 Jan]Buying Feed, II (dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=2020 和背包差不多 同样滚动数组 f[j]表示当前位置j份食物的最小价值 f[j]=min(f[j- ...
- BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心【定义价值】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2020 题意: FJ开车去买K份食物. 如果他的车上有X份食物,每走一里就花费X元. FJ的 ...
- USACO Buying Feed, II
洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II 洛谷传送门 JDOJ 2671: USACO 2010 Jan Silver 2.Buying Feed, II ...
- 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II
洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II https://www.luogu.org/problemnew/show/P2616 题目描述 Farmer ...
- 【P2616】 【USACO10JAN】购买饲料II Buying Feed, II
P2616 [USACO10JAN]购买饲料II Buying Feed, II 题目描述 Farmer John needs to travel to town to pick up K (1 &l ...
- BZOJ2059: [Usaco2010 Nov]Buying Feed 购买饲料
数轴上n<=500个站可以买东西,每个站位置Xi,库存Fi,价格Ci,运东西价格是当前运载重量的平方乘距离,求买K<=10000个东西到达点E的最小代价. f[i,j]--到第i站不买第i ...
- ACM BUYING FEED
BUYING FEED 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 Farmer John needs to travel to town to pick up ...
- BZOJ2021: [Usaco2010 Jan]Cheese Towers
2021: [Usaco2010 Jan]Cheese Towers Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 184 Solved: 107[Su ...
随机推荐
- 在vue中使用的Echarts的步骤
1.首先在项目中安装Echarts npm install echarts -g --save //安装 2.在项目中引入Echarts(在main.js中引入) import echarts fro ...
- vue源码之响应式数据
分析vue是如何实现数据响应的. 前记 现在回顾一下看数据响应的原因. 之前看了vuex和vue-i18n的源码, 他们都有自己内部的vm, 也就是vue实例. 使用的都是vue的响应式数据特性及$w ...
- Noip-pj2018游记
2019/1/3 搬运于我的luogu博客 2018/10/9 没有去试机,在学校搞文化课去了.准考证是让学校的信息课老师帮我拿的 回家后随手A了P1198 P3870 P2846 P1531 感觉真 ...
- python 退出程序的执行
使用sys.exit()退出当前程序的执行 import sys if x==0: sys.exit()
- 题解 P3834 【【模板】可持久化线段树 1(主席树)】
可持久化线段树的前置知识是权值线段树,但是你不学也没有太大的关系因为思想不是很难理解. 可持久化线段树支持历史记录查询,这是它赖以解题的方法. 在本题中思路是建立n颗线段树,然后对于每次询问,考虑其中 ...
- Myeclipse学习总结(8)——Eclipse实用操作
工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个"器".本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍.Eclipse快捷键用熟后,不用鼠标,便可进行 ...
- Web长连接推送
http://www.workerman.net/web-sender http://wahahachuang5.iteye.com/blog/2311313
- 洛谷 P1033 自由落体
P1033 自由落体 题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公 ...
- java线程共享受限资源 解决资源竞争 thinking in java4 21.3
java线程共享受限资源 解决资源竞争 具体介绍请參阅:thinking in java4 21.3 thinking in java 4免费下载:http://download.csdn.net/ ...
- Linux/UNIX线程(1)
线程(1) 本文将介绍怎样使用多个控制线程在单个进程环境中运行多个任务. 一个进程中的全部线程都能够訪问该进程的组成部件(如文件描写叙述符和内存). 线程包含了表示进程内运行环境必须的信息,当中包含进 ...