洛谷P1376 Yogurt factory 机器工厂

传送门

题目描述

小 T 开办了一家机器工厂,在 NN个星期内,原材料成本和劳动力价格不断起伏,第 ii 周生产一台机器需要花费 C_iC
i

元。若没把机器卖出去,每保养一台机器,每周需要花费 SS 元,这个费用不会发生变化。

机器工厂接到订单,在第 ii 周需要交付 Y_iY
i

台机器给委托人,第 ii 周刚生产的机器,或者之前的存货,都可以进行交付。

请你计算出这 nn 周时间内完成订单的最小代价。

输入格式
第一行输入两个整数 NN 和 SS,接下来 NN 行每行两个数 C_iC
i

和 Y_iY
i

输出格式

输出一个整数,表示最少的代价。

输入输出样例

输入 #1复制
4 5
88 200
89 400
97 300
91 500
输出 #1复制
126900

说明/提示

1\leq n\leq 10^41≤n≤10
4
,1 \le C_i \le 50001≤C
i

≤5000,1 \le S\le 1001≤S≤100,0\le Y_i\le 10^40≤Y
i

≤10
4

上代码:

#include<cstdio>
#include<iostream>
using namespace std;
long long ans,sum,tmp,f,n,s;//记得开long long,不然爆
int main(){//过程华丽开始
    scanf("%lld%lld",&n,&s);//这两个其实可以不用%lld,但是用了保险一点,不易错
    scanf("%d%d",&sum,&tmp);//先把第一个单独做了,就它例外
    ans+=sum*tmp;//必须直接生产,别无他法
    f=sum;//这是一个存最小数的变量,这就是贪心,新手自动理解为min
    for(int i=2;i<=n;i++){//开始循环,边读边做
        scanf("%d%d",&sum,&tmp);//在线读入
        if(f+s<sum)f=f+s;//判断f+s是否比当前值小,如果小,就不变,加一个s维修费
        else f=sum;//如果大就用当前值做
    ans+=f*tmp;
    }
    printf("%lld\n",ans);//完美输出
    return 0;//过程华丽结束
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值