poj2586 Y2K Accounting Bug —— 枚举
链接:http://poj.org/problem?id=2586
题意:大意是一个公司在12个月中,或固定盈余s,或固定亏损d.但记不得哪些月盈余,哪些月亏损,只能记得连续5个月的代数和总是亏损(和<0算亏损),问全年是否可能盈利?若可能,输出可能最大盈利金额,否则输出“Deficit".
题解:看了网上的题解,基本上都说是贪心,但我不知道怎样贪心,只不过按自己的想法去做(做的时候不够细心,忽略了细枝末节)。由于连续5个月必须亏损,所以就但看5个月内,亏损最少的情况,是1*d与4*s,是2*d与3*s……5*d+0*s(忽略点1,如果4个月的亏损都小于1个月的盈利,根据题意,那只能5个月都亏损了)。 即要算出单独在5个月内,在亏损最少的情况下,亏损与盈利所占的比例。假设算出d的月份数为k,即用最少的d,去填这12个月,使得每连续5个月,都至少有k个月份为d。由于越靠中间的月份出现的次数越多(但5,6,7,8均出现5次),所以我决定分别在5与8月份开始放置k(为何选5和8,因为他们靠中间,贡献大,且又能照顾到最尾端的月份,且中间的6,7月离得很近,也照顾得到),并且随着k的增大依次向两边放置,如k
= 2时,放2,4,8,9。由于没有继续推下去,初以为就直接是2*k个月为亏损。但却忽略了k=4或5时,当k=4时,每向两边放4个,两边都可满足,但是在中间的6,7月份,却有连续两个s盈利,就不符合k=4的条件,所以要在6,7月中再放一个d,即总共为9个d,当k=5时,就直接是12个月了。
所以,这种方法是枚举,不过枚举量少,可以人工枚举。(方法笨拙,见谅!)
收获:当枚举量小时,可人工枚举,但是要注意细节。且当得出一个结论时,不要理所当然以为对,要从多个角度,特别是边界条件,去考验这个结论是否站得住脚。
代码如下:
#include<stdio.h> int main()
{
long long r,s,d,sum;
while(scanf("%lld%lld",&s,&d)!=EOF)
{
if(d*1>s*4) sum = 10*s - 2*d;
else if(d*2>s*3) sum = 8*s - 4*d;
else if(d*3>s*2) sum = 6*s - 6*d;
else if(d*4>s*1) sum = 3*s - 9*d;
else sum = -1;
if(sum>0)
printf("%lld\n",sum);
else
printf("Deficit\n");
}
return 0;
}
poj2586 Y2K Accounting Bug —— 枚举的更多相关文章
- [POJ2586]Y2K Accounting Bug
[POJ2586]Y2K Accounting Bug 试题描述 Accounting for Computer Machinists (ACM) has sufferred from the Y2K ...
- POJ2586——Y2K Accounting Bug
Y2K Accounting Bug Description Accounting for Computer Machinists (ACM) has sufferred from the Y2K ...
- poj2586 Y2K Accounting Bug(贪心)
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj.org/problem?id=2586 ------ ...
- POJ2586 Y2K Accounting Bug 解题报告
Description Accounting for Computer Machinists (ACM) has sufferred from the Y2K bug and lost some vi ...
- POJ-2586 Y2K Accounting Bug贪心,区间盈利
题目链接: https://vjudge.net/problem/POJ-2586 题目大意: MS公司(我猜是微软)遇到了千年虫的问题,导致数据大量数据丢失.比如财务报表.现在知道这个奇特的公司每个 ...
- POJ2586 Y2K Accounting Bug(贪心)
题目链接. 题目大意: 题目相当晦涩难懂啊. 一年的12个月,每5个月统计一次,如从1~5,2~6,3~7,...,8~12共统计了8次,已知每次都deficit,问这一年有没有盈利的可能. 一个月s ...
- POJ 2586 Y2K Accounting Bug(枚举洪水问题)
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10674 Accepted: 53 ...
- POJ 2586 Y2K Accounting Bug(枚举大水题)
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10674 Accepted: 53 ...
- 贪心 POJ 2586 Y2K Accounting Bug
题目地址:http://poj.org/problem?id=2586 /* 题意:某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D. 公司每五个月进行一次统计,全年共统 ...
随机推荐
- mysql 设置不了短串密码怎么办 You must reset your password using ALTER USER statement before executing this statement.
centos7+ 安装 mysq 5.7 https://www.linuxidc.com/Linux/2016-09/135288.htm set global validate_password_ ...
- mysql function
mysql 自定义函数的使用 先查看函数功能是否开启:show variables like '%func%'; 若是未开启则:SET GLOBAL log_bin_trust_function_cr ...
- CentOS 笔记
对安装CentOS安装使用过程中的问题做一个笔记,第一次安装,安装的是7.0版本,最小化安装. 安装环境 :Windows 2012 R2 Standard,Hyper-V Virstual Mach ...
- mac os+selenium2+Firefox驱动+python3
此文章建立在之前写的chrome+selenium+Python环境配置的基础上,链接http://blog.csdn.net/zxy987872674/article/details/5308289 ...
- python pyqtgraph 保存图片到本地
pyqtgraph官方给的示例居然会报错2333 官方文档传送门:#####pyqtgraph export pyqtgraph支持在可视化窗口中右键保存(Exporting from the GUI ...
- serialVersionUID的作用以及如何用idea自动生成实体类的serialVersionUID
转载:http://blog.csdn.net/liuzongl2012/article/details/45168585 serialVersionUID的作用: 通过判断实体类的serialVer ...
- Lightoj 1088 - Points in Segments 【二分】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1088 题意: 有一维的n个点和q条线段.询问每条线段上的点有多少个. 思路:寻 ...
- 【转载】C#扫盲之:带你掌握C#的扩展方法、以及探讨扩展方法的本质、注意事项
1.为什么需要扩展方法 .NET3.5给我们提供了扩展方法的概念,它的功能是在不修改要添加类型的原有结构时,允许你为类或结构添加新方法. 思考:那么究竟为什么需要扩展方法呢,为什么不直接修改原有类型呢 ...
- C++再次理解虚表
#include <iostream> using namespace std; class Base { public: virtual void fun1() { cout <& ...
- Swift中的switch 和 do while
switch后面的()能够省略 OC中的switch假设没有break就会穿透(依次运行),在Swift中不会穿透(可理解默认就有break) OC中入股要在case中定义变量,必要要加上{}确定作用 ...