一、题目

Description

The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the next N (1 <= N <= 10,000) weeks, the price of milk and labor will fluctuate weekly such that it will cost the company C_i (1 <= C_i <= 5,000) cents to produce one unit of yogurt in week i. Yucky's factory, being well-designed, can produce arbitrarily many units of yogurt each week.

Yucky Yogurt owns a warehouse that can store unused yogurt at a constant fee of S (1 <= S <= 100) cents per unit of yogurt per week. Fortuitously, yogurt does not spoil. Yucky Yogurt's warehouse is enormous, so it can hold arbitrarily many units of yogurt.

Yucky wants to find a way to make weekly deliveries of Y_i (0 <= Y_i <= 10,000) units of yogurt to its clientele (Y_i is the delivery quantity in week i). Help Yucky minimize its costs over the entire N-week period. Yogurt produced in week i, as well as any yogurt already in storage, can be used to meet Yucky's demand for that week.

Input

  • Line 1: Two space-separated integers, N and S.

  • Lines 2..N+1: Line i+1 contains two space-separated integers: C_i and Y_i.

Output

  • Line 1: Line 1 contains a single integer: the minimum total cost to satisfy the yogurt schedule. Note that the total might be too large for a 32-bit integer.

Sample Input

4 5

88 200

89 400

97 300

91 500

Sample Output

126900

Hint

OUTPUT DETAILS:

In week 1, produce 200 units of yogurt and deliver all of it. In week 2, produce 700 units: deliver 400 units while storing 300 units. In week 3, deliver the 300 units that were stored. In week 4, produce and deliver 500 units.

二、思路&心得

  • 这题确实有点水,数据也很弱,比较的应该不只是相邻两周的数据,之后的应该也要比较,但是两种代码都能AC,这就有趣了。。。
  • 我的代码比较麻烦点,还有更简单复杂度更小为O(N)的解法,扫描时维护一个min值就行了,每次进入循环时自加S,然后和当前周的Y进行比较取其中最小的即可。

三、代码

解法一:

#include<cstdio>
#include<algorithm>
#define MAX_N 10005
using namespace std; struct Week {
int C;
int Y;
int visit;
} W[MAX_N]; int N, S; long long cost; void solve() {
cost = 0;
for (int i = 0; i < N; i ++) {
scanf("%d %d", &W[i].C, &W[i].Y);
}
for (int i = 0; i < N; i ++) {
if (!W[i].visit) {
cost += W[i].C * W[i].Y;
W[i].visit = 1;
for (int j = i + 1; j < N; j ++) {
if ((W[i].C + (j - i) * S) <= W[j].C) {
cost += (W[i].C + (j - i) * S) * W[j].Y;
W[j].visit = 1;
} else {
break;
}
}
}
}
printf("%lld\n", cost);
} int main() {
scanf("%d %d", &N, &S);
solve();
return 0;
}

解法二:

#include <cstdio>
typedef long long ll;
struct AC{
ll c,y;
}r[11000];
ll n,s;
int main(){
scanf("%d%d",&n,&s);
for (int i=1;i<=n;i++)
scanf("%d%d",&r[i].c,&r[i].y);
ll ans=0,min=1<<30;
for (int i=1;i<=n;i++){
min+=s;
if (min>r[i].c)
min=r[i].c;
ans+=min*r[i].y;
}
printf("%lld",ans);
return 0;
}

【贪心算法】POJ-2393 简单贪心水题的更多相关文章

  1. PAT甲题题解-1125. Chain the Ropes (25)-贪心水题

    贪心水题,每次取最短的两个绳子合并,长度缩减成一半 #include <iostream> #include <cstdio> #include <algorithm&g ...

  2. cogs 1440. [NOIP2013]积木大赛 贪心水题

    1440. [NOIP2013]积木大赛 ★★   输入文件:BlockNOIP2013.in   输出文件:BlockNOIP2013.out   简单对比时间限制:1 s   内存限制:128 M ...

  3. 贪心问题 POJ 2393 Yogurt factory

    题目:http://poj.org/problem?id=2393 题意:N周,每周生成牛奶(任意!),每周成本为c_i(1~5000),每周出货 y_i:出货可以使用该周生产的,也可以用之前的储存的 ...

  4. UVa(11292),贪心水题

    蓝书P1, 很简单的一个贪心选择,用能力小的去砍小的.本来想双重循环,哎,傻逼了,直接遍历选手,碰到能砍的就砍掉. #include <stdio.h> #include <algo ...

  5. UVA 11389 The Bus Driver Problem 贪心水题

    题目链接:UVA - 11389 题意描述:有n个司机,n个早班路线和n个晚班路线,给每个司机安排一个早班路线和一个晚班路线,使得每个早班路线和晚班路线只属于一个司机.如果一个司机早班和晚班总的驾驶时 ...

  6. codeforces 672C - Recycling Bottles 贪心水题

    感觉很简单,就是讨论一下 #include <stdio.h> #include <string.h> #include <algorithm> #include ...

  7. CF 322B Ciel and Flowers 贪心水题

    B. Ciel and Flowers time limit per test 1 second memory limit per test 256 megabytes input standard ...

  8. 贪心水题。UVA 11636 Hello World,LA 3602 DNA Consensus String,UVA 10970 Big Chocolate,UVA 10340 All in All,UVA 11039 Building Designing

    UVA 11636 Hello World 二的幂答案就是二进制长度减1,不是二的幂答案就是是二进制长度. #include<cstdio> int main() { ; ){ ; ) r ...

  9. hdu_2124 Flying to the Mars & hdu_1800 Repair the Wall 贪心水题

    hdu_1800 简单排一下序,从大开始把比他小的都访问一遍,ans++: #include <iostream> #include <stdio.h> #include &l ...

随机推荐

  1. uniapp开发踩坑记录

    数组绑定class的问题 版本:v1.5.4 自定义了一个icon的组件,部分代码如下 <template> <text :class="[name, icon]" ...

  2. python学习之路(1)

    今天刚入门python,对于有c和java基础的我,学习起来还是比较容易的,我并没有用PyCharm写,而是最基础的IDLE,学习python比java容易的地方就是不要写分号,不要打包,不要定义等等 ...

  3. Redis--位图BitMap

    一.BitMap是什么 通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身,value对应0或1,我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存 ...

  4. 20155325 2017-2018 1 课上测试、课下作业、实验——码云&博客链接汇总 《信息安全系统设计基础》

    第二周-课上 码云 https://gitee.com/bestiisjava2017/XinXiAnQuanXiTongSheJiJiChu20155325thl/tree/master/0927 ...

  5. 2018下学期C语言学习总结

    怎么说呢,2018年下学期已经过去了,2019年的上学期又来了,在2018年没有达到自己想要的结果,希望2019年可以达到,加油!我希望我以后可以又快又准确的完成C语言的编程,学习好所以关于电脑的基础 ...

  6. WPF之ComboBox的VisualTreeHelper

    原文:WPF之ComboBox的VisualTreeHelper 用WPF的ComboBox控件的时候,需要用到TextChanged属性,但是这个属性属于TextBox控件,不用担心,ComboBo ...

  7. JavaWeb总结(十三)

    Web开发模式的变迁 了解了Servlet和JSP,知道利用Servlet就可以开发一个Web应用程序,但是Servlet的缺陷使Web应用程序开发变得非常繁琐且不利于分工协作.使用JSP(表达式.声 ...

  8. 一个java程序员该具备的工具

    http://itindex.net/detail/37115-java-%E7%A8%8B%E5%BA%8F%E5%91%98-%E5%B7%A5%E5%85%B7 文章很详细.

  9. JAVA StringUtils需要导入的包

    <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang --> <dependency> <g ...

  10. SSISDB3:Package的执行实例

    SSISDB 系列随笔汇总: SSISDB1:使用SSISDB管理Package SSISDB2:SSIS工程的操作实例 SSISDB3:Package的执行实例 SSISDB4:当前正在运行的Pac ...