Poj 2586 Y2K Accounting Bug

本文探讨了一个公司每月盈亏的问题,通过分析不同盈亏月份的组合来确定一年内是否存在盈余。采用五个月为周期,寻找最优的盈亏分配方案,并提供了具体的实现代码。

题目链接:点击打开链接

题意:一个公司每个月的要么盈利s,要么亏损d,并且这个公司任何连续的五个月的总收入都是赔的。求是否存在这样的,若存在,输出盈利,不存在就输出Deficit

题解:因为每5个月都要是亏损的。所以我们会想到,如何分配这5月中亏损的月份。

我们发现SSDDD和DDDSS是一样的。并且如果D靠后的话反而可以让后面的月份用上

比如若一个月亏损就可以让五个月

1 - 5 月:SSSSD

2 - 6 月 : SSSDS

这样的话反而能让全年收入最大化。

那么我们会发现:现在就变成如何去分配亏算的月份。

有如下五种

SSSSDSSSSDSS

SSSDDSSSDDSS

SSDDDSSDDDSS

SDDDDSDDDDSD

DDDDDDDDDDDD

然后判断一下就OK了

#include<iostream>
#include<cstdio>
using namespace std;

int main(){
	int s,d;
	int sNum,dNum;
	while(~scanf("%d%d",&s,&d)){
		if(d > 4 *s){
			sNum = 10;
			dNum = 2;
		}
		else if(2 *d > 3*s){
			sNum = 8;
			dNum = 4;
		}
		else if(3 *d > 2*s){
			sNum = 6;
			dNum = 6;
		}
		else if(4 *d > s){
			sNum = 3;
			dNum = 9;
		}
		else {
			sNum = 0;
			dNum = 12;
		}
		int sum = sNum * s - dNum*d;
		if(sum > 0) cout << sum << endl;
		else cout <<"Deficit" << endl;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值