题目大意:
MS公司(我猜是微软)遇到了千年虫的问题,导致数据大量数据丢失。比如财务报表。现在知道这个奇特的公司每个月不是盈利就是亏损(废话),而且无论是盈利和亏损都有一个定值(亏少了它还不干
)。经过ACM组织的分析,在一年中任意连续的5个月,它都是亏损的,但是全年就不一定亏损了。现在给你盈利和亏损的定值s和d,请求出它一年能得到的最大利润!如果亏了,就输出Deficit!
贪心:
每五个连续的月一定亏损,我们可以设每五个月亏损月数最少为x,这种情况下,如果x能保证让这五个月为亏损,这是满足题意的盈利最大值!
x只能为1,2,3,4,5。
在保证连续5个月都亏损的前提下,使得每5个月中亏损的月数最少。根据d和s的不同五种情况
x=1: ssssd,ssssd,ss d>4s 赢利10个月 10s-2dx=2: sssdd,sssdd,ss 2d>3s 赢利8个月 8s-4dx=3: ssddd,ssddd,ss 3d>2s 赢利6个月 6s-6d x=4: sdddd,sdddd,sd 4d>s 赢利3个月 3s-9d //注意这里有个例外x=5: ddddd,ddddd,dd 4d<s 无赢利
注意:0也算是盈利
#include<iostream> using namespace std; int main() {int sum;int s, d;while (cin >> s >> d){if (4 * s < d){sum = s * 10 - d * 2;}else if (3 * s <2* d){sum = s * 8 - d * 4;}else if (2 * s <3 * d){sum = s * 6 - d * 6;}else if ( s <4 * d){sum = s * 3 - d * 9;//注意这里有个例外 }else{sum = -1;}if (sum >= 0){cout << sum << endl;}else{cout << "Deficit" << endl;}} }