• ACM第二弹【Commando War】


      怎么说呢,这一题应该算是百分之九十以上都是自己写的吧(因为完全看不懂解析上面的代码啊啊啊啊啊啊啊T_T),首先,分析题目,要使得尽早完成任务,必须给执行任务时间最长的那个家伙最先分派任务,因为一次只能交代一个任务,令交代第i个家伙的任务所花的时间为Bi,完成所以任务所花时间Bcost至少为B0+B1+……+B(n-1)+J(n-1),因为B0+B1+……+B(n-1)始终是不变的,所以要使总时间最小,就要让J(n-1)最小,毫无疑问,直接排序,把Ji最小的那个人放在最后指派任务23333333

    废话少说,先放代码:

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    
    struct comd
    {
        int b, j;
    };
    
    void sort(struct comd*begin, struct comd*end);
    
    int main()
    {
        int n, ph = 0;
        struct comd comd[1000];    //这一段开始的时候没有设定大小导致直接爆掉,太伤感了T_T
        while(scanf("%d", &n) == 1 && n)
        {
            for(int i = 0; i < n; i++) scanf("%d%d", &comd[i].b, &comd[i].j);
            sort(comd, comd+n);
            int B = 0, p = 0, Bcost = 0;    //注意变量的定义,就是因为定义到循环外面去了导致结果一直出错T_T
            for(int  i = 0; i < n; i++) B += comd[i].b;
            for(int i = 0; i < n-1; i++)
            {
                B -= comd[i].b;
                if(comd[i].j < B+comd[n-1].j) p++;
                else {p = i; break;}
            }
            for(int i = 0; i <= p; i++)   Bcost += comd[i].b;
            Bcost += comd[p].j;
            ph++;
            printf("case %d : %d
    ", ph, Bcost);
        }
        return 0;
    }
    
    void sort(struct comd*begin, struct comd*end)    //冒泡排序还不是很熟啊,看来还是要多加练习!!!!
    {
        struct comd temp;
        int n = end - begin, i, k;
        for(i = 0; i < n; i++)
        {
            for(k = 0; k < n-i; k++)
            {
                if((begin+k+1)->j > (begin+k)->j)
                {
                    temp = *(begin+k);
                    *(begin+k) = *(begin+k+1);
                    *(begin+k+1) = temp;
                }
            }
        }
        return;
    };

    感觉自己的方法好笨拙……但是实在是不理解那些库函数 = =

  • 相关阅读:
    C# Split() 去除 分组
    C#获取当前路径的7种方法
    给 C# 开发者的代码审查清单
    【知乎】一句话答案收录集,一句足矣
    C# string和byte[]的转换
    WCF 有零个操作;协定必须至少有一个操作
    WPF中动态改变控件显示位置
    转 将iPhone和Android手机屏幕投影仪投影显示
    转 MySQL数据库监控软件lepus使用问题以及解决办法
    转 Shell中的IFS解惑
  • 原文地址:https://www.cnblogs.com/runningintears/p/3408371.html
Copyright © 2020-2023  润新知