• POJ 2586 Y2K Accounting Bug(贪心)


    http://poj.org/problem?id=2586

    题意:

    每次输入两个数s和d,这个公司每个月要么盈利s,要么亏损d。公司每5个月进行一次审查,一年8次(即1~5,2~6...),每次都是亏损。问一年下来公司能盈利否,如果行则计算出最大盈利值。

    思路:

    每5个月中肯定是有亏损月的,那么这些月份肯定放在中间比较好,使用的比较多。

    我的做法是每次5个月相加,如果盈利了,则先将后面的月份改为亏损直至这5个月亏损。最后将12个月的情况相加就可以了。

     1 #include<iostream> 
     2 #include<string>
     3 #include<cstring>
     4 using namespace std;
     5 
     6 int s, d;
     7 int month[13];
     8 
     9 
    10 
    11 int main()
    12 {
    13     //freopen("D:\txt.txt", "r", stdin);
    14     int sum;
    15     while (cin >> s >> d)
    16     {
    17         memset(month, 0, sizeof(month));
    18         for (int i = 1; i <= 8; i++)
    19         {
    20             sum = 0;
    21             for (int j = i; j <= i + 4; j++)
    22             {
    23                 if (month[j] == 0)  month[j] = s;
    24                 sum += month[j];
    25             }
    26             int cnt = i + 4;
    27             while (sum >= 0)
    28             {
    29                 if (month[cnt] > 0)  month[cnt] = -d;
    30                 sum = sum - s - d;
    31                 cnt--;
    32             }
    33         }
    34         sum = 0;
    35         for (int i = 1; i <= 12; i++)
    36             sum += month[i];
    37         if (sum > 0)
    38             cout << sum << endl;
    39         else
    40             cout << "Deficit" << endl;
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    windows cluster 心跳检测阀值优化
    添加普通用户为sudoer
    每日备份脚本目录shell
    linux基础配置
    表变量 临时表 使用场景
    mysql分组排序row_number() over(partition by)
    replication_较少延迟时间
    SQL Server 参数化 PARAMETERIZATION
    thinkPHP RBAC模块
    thinkPHP 微信sdk
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6368769.html
Copyright © 2020-2023  润新知