【传送门: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的更多相关文章

  1. 2020: [Usaco2010 Jan]Buying Feed, II

    2020: [Usaco2010 Jan]Buying Feed, II Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 220  Solved: 162[ ...

  2. 【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- ...

  3. BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心【定义价值】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2020 题意: FJ开车去买K份食物. 如果他的车上有X份食物,每走一里就花费X元. FJ的 ...

  4. USACO Buying Feed, II

    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II 洛谷传送门 JDOJ 2671: USACO 2010 Jan Silver 2.Buying Feed, II ...

  5. 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II

    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II https://www.luogu.org/problemnew/show/P2616 题目描述 Farmer ...

  6. 【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 ...

  7. BZOJ2059: [Usaco2010 Nov]Buying Feed 购买饲料

    数轴上n<=500个站可以买东西,每个站位置Xi,库存Fi,价格Ci,运东西价格是当前运载重量的平方乘距离,求买K<=10000个东西到达点E的最小代价. f[i,j]--到第i站不买第i ...

  8. ACM BUYING FEED

    BUYING FEED 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 Farmer John needs to travel to town to pick up ...

  9. BZOJ2021: [Usaco2010 Jan]Cheese Towers

    2021: [Usaco2010 Jan]Cheese Towers Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 184  Solved: 107[Su ...

随机推荐

  1. 【CS-4476-project 6】Deep Learning

    AlexNet / VGG-F network visualized by mNeuron. Project 6: Deep LearningIntroduction to Computer Visi ...

  2. 安装anaconda和tensorflow

    一.首先下载anaconda,下载:Anaconda2-4.3.1-Linux-x86_64.sh(https://repo.continuum.io/archive/)参考网址:https://ww ...

  3. React 中组件间通信的几种方式

    在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子组件通信 子组件向父组件通信 非嵌套组件间通信 跨级组件之间通信 1.父组件向子组件通 ...

  4. USACO 玛丽卡(最短路+枚举)

    USACO 玛丽卡 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们知道从一个城市 ...

  5. 洛谷—— P2896 [USACO08FEB]一起吃饭Eating Together

    https://www.luogu.org/problem/show?pid=2896 题目描述 The cows are so very silly about their dinner partn ...

  6. Qt之自定义布局管理器(QFlowLayout)

    简述 QFlowLayout,顾名思义-流布局,实现了处理不同窗口大小的布局.根据应用窗口的宽度来进行控件放置的变化. 具体实现要求不再赘述,请参考前两节内容. 简述 实现 效果 源码 实现 QFlo ...

  7. [TypeScript] Asynchronous Iteration using for-await-of

    The for-await-of syntax is similar to the for-of iteration. The key difference is that it automatica ...

  8. C++归并排序总结

    #include <iostream> using namespace std; //归并排序非递归版. void Sort(int a[], int n,int high) { int ...

  9. HDOJ1084 What Is Your Grade?

    What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  10. 第二章 Linux常用命令

    1.命令基础 命令格式:  命令名  [选项] [参数1] [参数2] 命令必须小写,命令正常执行后返回一个0,表示执行成功,如果执行出错,就反悔一个非零值 2.简单的几个命令  who:列出所有正在 ...