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. 公司每五个月进行一次统计,全年共统 ...
随机推荐
- 配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台乱码
配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台出现乱码 解决方法: 在idea的bin目录(如:D:\JetBrains\IntelliJ IDEA 2018.1 ...
- 1.搭建maven,eclipse创建maven项目
1.下载maven包,下载地址为:http://maven.apache.org/download.cgi 2.解压zip包 3.eclipse 引入maven: window-Preferences ...
- mybatis学习网站
http://www.mybatis.org/mybatis-3/zh/index.html
- Unity -- 入门教程一
首先声明一下,我用的Unity版本是4.6.6,编译环境是VS2010,其余的我会慢慢介绍,安装的过程这里我就不做讲解了,度娘那会做的比我详细.安装包可以在最下面的联系方式找我要,现在开始进入主题. ...
- AngularJS的form状态变色
代码下载:https://files.cnblogs.com/files/xiandedanteng/angularjsChangeFormClass.rar 代码: <!DOCTYPE HTM ...
- youtube-dl取代you-get?
以前了解到you-get这个项目,支持超多视频网站下载,不过偶尔会出各种问题. 今天看到依云的博客文章:放弃 you-get,转投 youtube-dl 然后特地看了youtube-dl的支持列表:h ...
- Android 适配器教程 (六)
我们的适配器学习已经接近尾声了.尽管这不是一个大问题,可是确实是值得学习的一块知识,回忆一下之前五讲的知识.我们已经学到了非常多东西了. 在之前五讲中.我们已经由浅入深的认识了适配器,从最简单的Lis ...
- 计算机的一些经典书籍CS经典书单
c++: <c++程序设计> <c++primer> <effective c++> <more effective c++> <深入探索c++对 ...
- Node.js Express 框架 Express
Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...
- UUID随机字符串
public static void main(String[] args){ System.out.println(UUID.randomUUID().toString()); } //输出:698 ...