码迷,mamicode.com
首页 > 其他好文 > 详细

随笔——CodeForces 588A Description

时间:2016-05-28 14:20:03      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

题目的意思是给你多组清单,每组包含所需食物的数量,和当天食物的单价,可以囤积食物。求花最少的钱完成清单。

解决这道题目的策略是从头到尾扫描一遍这些清单,再遇到更便宜的价格前都用之前最便宜的价格买食物,再更新当前最便宜的价格,以此类推下去。

数组a[ ]代表各天地食物需求

数组b[ ]代表各天地食物单价

变量cheap代表当前最便宜的单价是哪天

#include<cstdio>
#include<cstring>
#include<iostream>

using namespace std;

#define  MAX(x,y) (((x)>(y)) ? (x) : (y))
#define  MIN(x,y) (((x) < (y)) ? (x) : (y))
#define ABS(x) ((x)>0?(x):-(x))

const int inf = 0x7fffffff;

const int N=100000+10;
int a[N];
int b[N];
int main()
{
    int n;
    cin>>n;
    for(int i=0; i<n; i++){
        scanf("%d%d",a+i,b+i);
    }
    int cheap=0;
    int cnt=a[0];
    long long ans=0;
    for(int i=1; i<n; i++){
        if(b[i] < b[cheap] ){
            ans += b[cheap]*cnt;
            cnt=a[i];
            cheap=i;
        }
        else{
            cnt += a[i];
        }
//        cout<<"ans= "<<ans<<endl;
    }
    ans += b[cheap]*cnt;
    cout<<ans<<endl;
    return 0;
}

 

随笔——CodeForces 588A Description

标签:

原文地址:http://www.cnblogs.com/shawn-ji/p/5537215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!