• POJ1017贪心


    题意:小P开了一家淘宝店铺,店铺里所有的商品高度都为h,但长和宽分别为1*1,2*2,3*3,4*4,5*5,6*6六种规格。这一天来了一个大客户,他订购了很多物品。所以小P需要将东西都邮寄给他,但是小P只有高度为h,长宽为6*6的箱子,小P想知道自己最少需要用多少个箱子,才能把客户需要的所有物品都寄过去?(多组输入,遇到0 0 0 0 0 0结束)

    题解:贪心的大水题,只要把握好从大到小放入箱子的同时,尽可能将箱子放满即可。

    #include<stdio.h>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    const int inf = 0x3f3f3f3f;
    typedef long long ll;
    int n[10];
    int main(void)
    {
        ios::sync_with_stdio(false);
        while (cin >> n[1] >> n[2] >> n[3] >> n[4] >> n[5] >> n[6])
        {
            int flag = 0;
            for (int i = 1; i <= 6; i++)
            {
                if (n[i] != 0)
                    flag = 1;
            }
            if (flag == 0)break;
            int ans = 0;
            ans += n[6];
            if (n[5] > 0)
            {
                ans += n[5];
                n[1] -= n[5] * 11;
                if (n[1] < 0)n[1] = 0;
            }
            if (n[4] > 0)
            {
                ans += n[4];
                if (n[2] >= n[4] * 5)
                    n[2] -= n[4] * 5;
                else
                {
                    int n1 = 20 * n[4] - n[2] * 4;
                    n[2] = 0;
                    n[1] -= n1;
                    if (n[1] < 0)n[1] = 0;
                }
            }
            if (n[3] > 0)
            {
                if (n[3] % 4 == 0)
                    ans += (n[3] / 4);
                else
                {
                    ans += (n[3] / 4) + 1;
                    n[3] = n[3] % 4;
                    if (n[3] == 1)
                    {
                        if (n[2] >= 5)
                        {
                            n[2] -= 5;
                            n[1] -= 7;
                            if (n[1] < 0)n[1] = 0;
                        }
                        else
                        {
                            n[1] -= (27 - n[2] * 4);
                            n[2] = 0;
                            if (n[1] < 0)n[1] = 0;
                        }
                    }
                    if (n[3] == 2)
                    {
                        if (n[2] >= 3)
                        {
                            n[2] -= 3;
                            n[1] -= 4;
                            if (n[1] < 0)n[1] = 0;
                        }
                        else
                        {
                            n[1] -= (18 - n[2] * 4);
                            n[2] = 0;
                            if (n[1] < 0)n[1] = 0;
                        }
                    }
                    if (n[3] == 3)
                    {
                        if (n[2] >= 1)
                        {
                            n[2]--;
                            n[1] -= 5;
                            if (n[1] < 0)n[1] = 0;
                        }
                        else
                        {
                            n[1] -= (9 - n[2] * 4);
                            n[2] = 0;
                            if (n[1] < 0)n[1] = 0;
                        }
                    }
                }
            }
            if (n[2] > 0)
            {
                if(n[2]%9==0)
                    ans += n[2] / 9;
                else
                {
                    ans += n[2] / 9 + 1;
                    n[2] = n[2] % 9;
                    n[1] -= (36 - n[2] * 4);
                    n[2] = 0;
                    if (n[1] < 0)n[1] = 0;
                }
            }
            if (n[1] > 0)
            {
                if(n[1]%36==0)
                    ans += n[1] / 36;
                else
                    ans += n[1] / 36 + 1;
            }
            cout << ans << endl;
        }
        return 0;
    }
  • 相关阅读:
    Jquery
    JavaScript
    poj--2115 C Looooops
    poj--3970 party
    poj 1061 青蛙的约会
    hdu1250--Hat's Fibonacci
    2318--TOYS
    扩展欧几里得--让你一次刷个够
    关于大数加法的解法
    有关环形数组的约瑟夫问题
  • 原文地址:https://www.cnblogs.com/ZJNU-huyh/p/13210442.html
Copyright © 2020-2023  润新知