zoukankan      html  css  js  c++  java
  • POJ2586 Y2K Accounting Bug 贪心

    这题题意是别人告诉的,现在这里表示感谢了。

    题目就是说给定一个盈利和一个亏损值,(一个月只可能盈利或者亏损)一年12个月,任意连续5个月的和值必须亏损。求十二个月的最大盈利是多少?

    解题思路:

    先确定前五个月的安排情况,把亏损的尽量安排靠后,然后再从2月到8月为起点进行暴力,每次能够新确定一个月的盈亏情况(根据5月之和小于零)。最后再确认12个月是否盈利。

    代码如下:

    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    int s, d, seq[15];
    
    void deal()
    {
        int c;
        for (int i = 4; i >= 0; --i) {
            c = s*i+(5-i)*d;
            if (c < 0) {
                c = i;
            //    puts("HHKHK");
                break;
            }  // 找出临界的第一个五月亏损,且盈利的月数尽可能的多 
        }
        for (int i = 1; i <= c; ++i) {
            seq[i] = s;
        }
        for (int i = c+1; i <= 5; ++i) {
            seq[i] = d;
        }
        for (int i = 2; i <= 8; ++i) {
            int k = i + 3, temp = 0;
            for (int j = i; j <= k; ++j) { 
                temp += seq[j];
            }
            if (temp + s < 0) {
                seq[i+4] = s;
            }
            else {
                seq[i+4] = d;
            }
        }
    }
    
    int main()
    {
        int ans;
        while (scanf("%d %d", &s, &d) == 2) {
            ans = 0;
            d *= -1;  // d 为负数表示亏损 
            deal();
            for (int i = 1; i <= 12; ++i) {
                ans += seq[i];
            }
            printf(ans > 0 ? "%d\n" : "Deficit\n", ans);
        }
        return 0;    
    }
  • 相关阅读:
    SQL字段排序
    delphi MessageBox 用法
    delphi获取当前计算机所有盘符
    PHP限制IP
    delphi 显示数据
    GUI模块分解与开发征集
    delphi 用户登录 代码
    Hello China GUI模块鼠标指针的实现
    DELPHI 托盘 实例
    delphi 内存流 操作
  • 原文地址:https://www.cnblogs.com/Lyush/p/2569628.html
Copyright © 2011-2022 走看看