贪心 POJ 2586 Y2K Accounting Bug

 

题目地址:http://poj.org/problem?id=2586

  1 /*
  2     题意:某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D。
  3         公司每五个月进行一次统计,全年共统计8次(1-5、2-6、3-7、4-8、5-9、6-10、7-11、8-12),
  4         已知这8次统计的结果全部是亏空(盈利-亏空<0)。题目给出S和D,判断全年是否能盈利,
  5         如果能则求出盈利的最大值,如果不能盈利则输出Deficit
  6     贪心 or 枚举
  7         1. 贪心抓住亏损的月尽量在5个月的后面,这样可以被下一次利用,从而获取最大值
  8         2. 可以枚举是因为可能的情况少
  9             详细解释:http://blog.csdn.net/lyy289065406/article/details/6642603
 10 */
 11 #include <cstdio>
 12 #include <iostream>
 13 #include <algorithm>
 14 #include <cstring>
 15 #include <cmath>
 16 #include <string>
 17 #include <map>
 18 #include <queue>
 19 #include <vector>
 20 using namespace std;
 21 
 22 const int MAXN = 1e6 + 10;
 23 const int INF = 0x3f3f3f3f;
 24 int used[13];
 25 
 26 void work(int s, int d)
 27 {
 28     int sum = 0;    int cnt;    int k;
 29 
 30     cnt = 5;
 31     while (s * (cnt) - d * (5 - cnt) > 0 && cnt > 0)    cnt--;
 32     k = 5 - cnt;
 33     sum += s * (5 - k) - d * k;
 34     for (int i=5; i>=1 && k--; --i)        used[i] = 1;
 35 
 36     for (int i=2; i<=8; ++i)
 37     {
 38         int n = 0;
 39         for (int j=i; j<=4+i-1; ++j)
 40         {
 41             if (used[j])    n++;
 42         }
 43         int tmp = 0;
 44         tmp += s * (4 - n) - d * n;
 45         if (tmp < 0 && tmp + s < 0)        sum += s;
 46         else
 47         {
 48             sum -= d;    used[i+4] = 1;
 49         }
 50     }
 51 
 52     (sum >= 0) ? printf ("%d\n", sum) : puts ("Deficit");
 53 }
 54 
 55 int main(void)        //POJ 2586 Y2K Accounting Bug
 56 {
 57     //freopen ("E.in", "r", stdin);
 58 
 59     int s, d;
 60     while (~scanf ("%d%d", &s, &d))
 61     {
 62         memset (used, 0, sizeof (used));
 63         work (s, d);
 64     }
 65 
 66     return 0;
 67 }
 68 
 69 /*
 70 #include <cstdio>
 71 #include <iostream>
 72 #include <algorithm>
 73 #include <cmath>
 74 using namespace std;
 75 
 76 int main(void)
 77 {
 78     //freopen ("E.in", "r", stdin);
 79 
 80     int s, d;
 81     while (~scanf ("%d%d", &s, &d))
 82     {
 83         int ans = 0;
 84         if (4 * s - d < 0)
 85         {
 86             ans = 10 * s - 2 * d;
 87         }
 88         else if (3 * s - 2 * d < 0)
 89         {
 90             ans = 8 * s - 4 * d;
 91         }
 92         else if (2 * s - 3 * d < 0)
 93         {
 94             ans = 6 * s - 6 * d;
 95         }
 96         else if (1 * s - 4 * d < 0)
 97         {
 98             ans = 3 * s - 9 * d;
 99         }
100         else    ans = -1;
101         if (ans > 0)    printf ("%d\n", ans);
102         else    puts ("Deficit");
103     }
104 
105     return 0;
106 }
107 */

 

转载于:https://www.cnblogs.com/Running-Time/p/4372463.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值