解题报告1134_积木分发- Jackreturn的解题报告- 博客大巴
  • 这题是用贪心算法,先把积木给需要最少的人。其实在操作系统的内存分配中有个叫“银行家算法”跟这题是一样的。可见ACM的工程性还是挺强的。

    #include <stdio.h>
    #include <algorithm>

    using namespace std;

    struct Jm
    {
        int has;
        int want;
    };

    bool cmp(Jm j1, Jm j2)
    {
        return j1.want < j2.want;
    }

    int main()
    {
        Jm jm[10000];
        int n;
        int s;
        int i;
        while (scanf("%d", &n) && n!=0)
        {
            scanf("%d", &s);
            for (i=0; i<n; i++)
            {
                scanf("%d%d", &jm[i].has, &jm[i].want);
            }
            sort(jm, jm+n, cmp);
            for (i=0; i<n; i++)
            {
                if (s < jm[i].want)
                {
                    break;
                }
                else
                    s += jm[i].has;
            }

            if (i == n)
            {
                printf("YES\n");
            }
            else
                printf("NO\n");
        }
        return 0;
    }





郑重声明:资讯 【解题报告1134_积木分发- Jackreturn的解题报告- 博客大巴】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——