poj2586 Y2K Accounting Bug(贪心)

poj2586 Y2K Accounting Bug(贪心)

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents

题目链接:http://poj.org/problem?id=2586

----------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎光临天资小屋害羞害羞害羞害羞http://user.qzone.qq.com/593830943/main

----------------------------------------------------------------------------------------------------------------------------------------------------------

Language:
Y2K Accounting Bug
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 9979   Accepted: 4970

Description

Accounting for Computer Machinists (ACM) has sufferred from the Y2K bug and lost some vital data for preparing annual report for MS Inc. 

All what they remember is that MS Inc. posted a surplus or a deficit each month of 1999 and each month when MS Inc. posted surplus, the amount of surplus was s and each month when MS Inc. posted deficit, the deficit was d. They do not remember which or how many months posted surplus or deficit. MS Inc., unlike other companies, posts their earnings for each consecutive 5 months during a year. ACM knows that each of these 8 postings reported a deficit but they do not know how much. The chief accountant is almost sure that MS Inc. was about to post surplus for the entire year of 1999. Almost but not quite. 

Write a program, which decides whether MS Inc. suffered a deficit during 1999, or if a surplus for 1999 was possible, what is the maximum amount of surplus that they can post.

Input

Input is a sequence of lines, each containing two positive integers s and d.

Output

For each line of input, output one line containing either a single integer giving the amount of surplus for the entire year, or output Deficit if it is impossible.

Sample Input

59 237
375 743
200000 849694
2500000 8000000

Sample Output

116
28
300612
Deficit

题意比較难懂,事实上仅仅要读懂题意,就非常easy了。
大意是一个公司在12个月中,或固定盈余s,或固定亏损d.
但记不得哪些月盈余,哪些月亏损,仅仅能记得连续5个月的代数和总是亏损(<0为亏损),而一年中仅仅有8个连续的5个月,分别为1~5,2~6,…,8~12
问全年是否可能盈利?若可能,输出可能最大盈利金额,否则输出“Deficit”.

思路:贪心思想,每连续5个月中,在保证这5个月经营之和为亏损的情况下,亏损的月数肯定应尽量往后选,盈利的月数应尽量往前选。

一共五种情况:

把5种情况能够归纳为关于s的判定条件:

0 <= s <1/4d           每连续5个月种至少1个月D

1/4d <= s < 2/3d          每连续5个月种至少2个月D

2/3d <= s < 3/2d          每连续5个月种至少3个月D

3/2d <= s < 4d           每连续5个月种至少4个月D

4d <= s                全年各月必亏损

代码例如以下:

#include <iostream>using namespace std;int main(){	int s, d, flag;	while(cin>>s>>d)	{		int sum = 0;		flag = 0;		if(0<=s && s<(1.0/4)*d)		{			sum = 10*s - 2*d;		}		else if((1.0/4)*d<=s && s<(2.0/3)*d)		{			sum = 8*s-4*d;		}		else if((2.0/3)*d<=s && s<(3.0/2)*d)		{			sum = 6*s-6*d;		}		else if((3.0/2)*d<=s && s<4*d)		{			sum = 3*s-9*d;		}		else if(4*d <= s)		{			flag = 1;		}		if( sum < 0)			flag = 1;		if(flag)			cout<<"Deficit"<<endl;		else			cout<<sum<<endl;	}	return 0;}

                    

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118906.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jquery的delegate实现原理[通俗易懂]

    jquery的delegate实现原理[通俗易懂]//对标签绑定点击事件但是该方法对动态生成的元素无法生效$(‘.btn’).bind(‘click’,function(){alert(‘点击了’);})//jquery处理$(‘document’).delegate(‘.btn’,’click’,function(){alert(‘点击了’);});//其实原理就是利用了J

    2022年8月30日
    0
  • 【matlab】meshgrid的使用

    【matlab】meshgrid的使用函数参数列表[X,Y]=meshgrid(x,y)[X,Y]=meshgrid(x)[X,Y,Z]=meshgrid(x,y,z)[X,Y,Z]=meshgrid(x)meshgrid可以生成2D或者3D的矩阵,如果为2D,矩阵的shape为(y.length,x.length)如果为3D,矩阵的shape为(y.length,x.length,z.length)代码示例sample1x=1:2;%length2y=3:5;%length3[X,Y]=m

    2022年5月29日
    35
  • DrawText

    DrawTextDrawText函数功能:该函数在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐、折行等)。函数原型:intDrawText(HDChdc,LPCTSTRl

    2022年8月2日
    7
  • java二维数组初始化的三种方式「建议收藏」

    java二维数组初始化的三种方式「建议收藏」有些知识觉得很简单,但其中一些细节性的东西我们未必知道,比如说数组的定义以及初始化的方式。下面主要介绍下二位数组初始化的三种方式1、定义数组的同时使用大括号直接赋值,适合数组元素已知的情况2、定义二维数组的大小,然后分别赋值3、数组第二维的长度可变化//第一种方式:定义的同时大括号直接复制int[][]array1={{1,3,1},{…

    2022年5月9日
    87
  • IDataParameter调用存储过程

    IDataParameter调用存储过程

    2021年12月6日
    47
  • OpenCV实现SfM(四):Bundle Adjustment

    OpenCV实现SfM(四):Bundle Adjustment使用CeresSolver实现三维重建中的BundleAdjustment.

    2022年6月20日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号