Yogurt factory POJ 2393

水题,有个奶酪工厂,每天生产奶酪,现在给你一个n和一个s,n代表他要生产多少天(次)奶酪,s代表他每存一个奶酪一天要花多少钱,现在输入n个c和y,c代表今天生产奶酪要多少钱,y代表今天要向外面供多少货(不是今天生产多少)。问你成本最少要多少钱。

因为会出现这种情况比如:

s(存一天要多少钱)=2

10 200

1000 200

因为可以存奶酪,所以很明显第二天生产奶酪成本太高了,所以直接第一天生产400个,第一天卖出去200个,剩下200个先存一天,第二天再卖,由于题面不需要精确到个,每天都是按照给的数量买和生产,不会第一天331个第二天69个这样,所以直接用个标记来标记他第几天生产的时候+存到今天要多少钱最便宜

 

#include<iostream>
#include<algorithm>

using namespace std;

struct node{
	long long price;
	long long num;
};

node a[10010];

int main()
{
	long long n,s;
	cin>>n>>s;
	for(int i=0;i<n;i++)
		cin>>a[i].price>>a[i].num;
	int pos=0;//第几天生产
	long long price;//答案 
	price=a[0].num*a[0].price;//怕混淆所以先记录第一个,因为第一个一定是按自己的价格生产的 
	for(int i=1;i<n;i++)
	{
		if((i-pos)*s*a[i].num+a[pos].price*a[i].num<a[i].num*a[i].price)
			price+=(i-pos)*s*a[i].num+a[pos].price*a[i].num;
		else
		{
			price+=a[i].num*a[i].price;
			pos=i;
		}
	}
	cout<<price<<endl;
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值