链接: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 —— 枚举的更多相关文章

  1. [POJ2586]Y2K Accounting Bug

    [POJ2586]Y2K Accounting Bug 试题描述 Accounting for Computer Machinists (ACM) has sufferred from the Y2K ...

  2. POJ2586——Y2K Accounting Bug

    Y2K Accounting Bug   Description Accounting for Computer Machinists (ACM) has sufferred from the Y2K ...

  3. poj2586 Y2K Accounting Bug(贪心)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj.org/problem?id=2586 ------ ...

  4. POJ2586 Y2K Accounting Bug 解题报告

    Description Accounting for Computer Machinists (ACM) has sufferred from the Y2K bug and lost some vi ...

  5. POJ-2586 Y2K Accounting Bug贪心,区间盈利

    题目链接: https://vjudge.net/problem/POJ-2586 题目大意: MS公司(我猜是微软)遇到了千年虫的问题,导致数据大量数据丢失.比如财务报表.现在知道这个奇特的公司每个 ...

  6. POJ2586 Y2K Accounting Bug(贪心)

    题目链接. 题目大意: 题目相当晦涩难懂啊. 一年的12个月,每5个月统计一次,如从1~5,2~6,3~7,...,8~12共统计了8次,已知每次都deficit,问这一年有没有盈利的可能. 一个月s ...

  7. POJ 2586 Y2K Accounting Bug(枚举洪水问题)

    Y2K Accounting Bug Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10674   Accepted: 53 ...

  8. POJ 2586 Y2K Accounting Bug(枚举大水题)

    Y2K Accounting Bug Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10674   Accepted: 53 ...

  9. 贪心 POJ 2586 Y2K Accounting Bug

    题目地址:http://poj.org/problem?id=2586 /* 题意:某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D. 公司每五个月进行一次统计,全年共统 ...

随机推荐

  1. netframework中等待多个子线程执行完毕并计算执行时间

    本文主要描述在.netframework中(实验环境.netframework版本为4.6.1)提供两种方式等待多个子线程执行完毕. ManualResetEvent 在多线程中,将ManualRes ...

  2. 【ZJOI2016】大♂森林

    题目描述 小Y家里有一个大森林,里面有 $n$ 棵树,编号从 $1$ 到 $n$ .一开始这些树都只是树苗,只有一个节点,标号为 $1$ .这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长 ...

  3. 1004 Counting Leaves

    A family hierarchy is usually presented by a pedigree tree. Your job is to count those family member ...

  4. Div 浮动到另一个div之上

    转自原文Div 浮动到另一个div之上 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <met ...

  5. ubuntu允许mysql远程连接

    ubuntu允许mysql远程连接 第一步: vim /etc/MySQL/my.cnf找到bind-address = 127.0.0.1 注释掉这行,如:#bind-address = 127.0 ...

  6. Xcode搭建真机调试环境 图文实例

    本文介绍的Xcode搭建真机调试环境 图文实例,图文并茂,使我们学习起来更方便些,我们先来看内容. AD: 2013云计算架构师峰会超低价抢票中 Xcode搭建真机调试环境 是本文要介绍的内容,不多说 ...

  7. apache一个IP绑定多个域名

    用ServerAlias <VirtualHost *:80>ServerAdmin i@kuigg.comDocumentRoot /www/kuigg.comServerName ku ...

  8. 每天进步一点点—SQL优化

    一.           SQL优化 1.   通过show status 命令了解各种SQL的运行频率 mysql>show status like 'Com_%'; +----------- ...

  9. php-fpm.conf配置说明(重点要改动和优化的地方)

    <?xml version="1.0" ?> <configuration> All relative paths in this config are r ...

  10. linux find prune排除某目录或文件

    http://blog.csdn.net/ysdaniel/article/details/7995681 查找cache目录下不是html的文件 find ./cache ! -name '*.ht ...