A. Duff and Meat

水题地址

达夫对肉上瘾了!马利克想让她开心n天。为了在第一天过得开心,她需要吃整整一公斤的肉。
住宅区有一家大商店,马利克想从那里给她买肉。第一天,他们以每公斤几美元的价格卖肉。Malek知道所有的数字a1,…, an和p1,…,pn。在每一天,他可以买任意数量的肉,也可以为将来保留一些肉。
马利克煮肉有点累了,所以他请求你的帮助。帮他把他为了让达夫开心n天而花的钱减到最少。
输入
输入的第一行包含整数n (1≤n≤105)的天数。
在接下来的n行,i行包含两个整数ai和π(1≤ai,π≤100),肉达夫的数量需求和成本的肉。
输出
在一行中打印出让达夫开心n天所需的最低金额。
请注意
在第一个例子中:最优的方式是第一天买1公斤,第二天买2公斤,第三天买3公斤。
在第二个例子中:最佳的方法是第一天买1公斤,第二天买5公斤(第二天和第三天需要的肉)。

简单说下思路吧: 就是把p[i]中前面较小的数字将后面较大的数字替换掉。

#include<iostream>
#include<stdio.h>
using namespace std;

int main()
{
	long long int n, a[100000], p[100000];
	long long int sum = 0;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i] >> p[i];
	for (int i = 0; i < n; i++)
	{
		if (p[i] < p[i + 1])
			p[i + 1] = p[i];
		sum = sum + (a[i] * p[i]);
	}
	cout << sum << endl;
	//system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43866567/article/details/87900269