小F爱黄金

题目描述

小 F 是一个狂热的黄金爱好者,所以他决定每天积攒固定重量的黄金,若第 i 天他积攒的黄金重量不少于 ai​ 克,小 F 就会感到开心,但是黄金的价格每天都会变动,在第 i 天,黄金的价格为 qi​ 每克。现在已知 a1​,...,an​ 和 q1​,...,qn​。在每一天,小 F 可以购买任意重量的黄金,当天买入的黄金也可以留到后面的天来积攒(可以理解为存入仓库),请你帮助小 F 计算一下他至少需要花费多少钱才能在这 n 天都保持开心。

数据范围:1≤n≤105,1≤ai​,qi​≤100

输入格式

第一行输入一个正整数 n,表示天数。
第 2∼n+1 行每行输入两个正整数 ai​,qi​,表示当天小 F 的黄金积攒需求量以及当天黄金的价格。

输出格式

一个整数,即使小 F 在这 n 天始终保持开心的最小花费。

输入样例#1

3
1 3
2 2
3 1

输出样例#1

10

输入样例#2

3
1 3
2 1
3 2

输出样例#2

8

样例解释

对于样例一,一种可行的方案是在第一、二、三天分别购买 1、2、3 克黄金。

对于样例二,一种可行的方案是在第一天购买 1 克黄金,第二天购买 5 克黄金(2 克用于第二天积攒,3 克用于第三天积攒)。

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB



int a[N], b[N];
int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i] >> b[i];
    }
    long long sum = 0, d = 0,m = a[0],fm=b[0];//注意初始值
    for (int i = 0; i < n; i++)
    {
        if (fm > b[i]||i==n-1)
        {
            sum += m * fm;
            fm = b[i];
            m = a[i];
        }
        else
        {
            m += a[i];
        }
    }
    cout << sum << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linalw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值