zoukankan      html  css  js  c++  java
  • ZOJ 3508 (the war)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3508

    注意:题意:有N个士兵,其中第 Ni 个士兵能拿起武器重量的范围为(w-Min, w-Max), 然后又给出了M件武器,重量分别为Mi(i=1,2,3,...),因为有武器的士兵的人数越多,战争越容易胜利,所以求最多可以有多少个士兵能配武器。


    #include<string.h>
    #include<stdio.h>
    #include<algorithm>
    
    using namespace std;
    struct node{
        int l, r;
    }ss[3000], temp;
    
    //int cmp(int a,int b)
    //{
      //  return a<b;
    //}
    
    int main()
    {
        int n, m, cnt, i, j, t;
        int a[100000];
        while(scanf("%d %d", &n, &m)!=EOF)
        {
            cnt = 0;
            memset(a, 0, sizeof(a));
    
            for(i=0; i<n; i++)
                scanf("%d %d", &ss[i].l, &ss[i].r);
      // 实现区间由小到大排序,以右区间为准进行排序, 如果右区间相同,则以左区间进行由大到小的排序。
            for(i=0; i<n-1; i++)
                for(j=i+1; j<n; j++)
            {
                if(ss[i].r > ss[j].r)
                {
                    temp = ss[i];
                    ss[i] = ss[j];
                    ss[j] = temp;
                }
                if(ss[i].r == ss[j].r)
                {
                    if(ss[i].l > ss[j].l)
                    {
                        temp = ss[i];
                        ss[i] = ss[j];
                        ss[j] = temp;
                    }
                }
            }
    //哈希,存一下武器的数量
            for(i=0; i<m; i++)
            {
                scanf("%d", &t);
                a[t]++;
            }
    
           // sort(a, a+m, cmp);
    
            for(i=0; i<n; i++)
            {
                int ll=ss[i].l, rr=ss[i].r;
                for(j=ll; j<=rr; j++)
                {
                     if(a[j])//如果在此区间里存在可配备武器的士兵,则计数变量cnt++,然后对应的下表的武器数减 1 。
                    {
                        a[j]--;
                        cnt++;
                        break;
                    }
                }
            }
            printf("%d
    ", cnt);
        }
        return 0;
    }
    


    每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
  • 相关阅读:
    BZOJ 1630/2023 Ant Counting 数蚂蚁
    BZOJ 3997 组合数学
    BZOJ 2200 道路与航线
    BZOJ 3181 BROJ
    BZOJ 4011 落忆枫音
    BZOJ 4027 兔子与樱花
    vijos 1741 观光公交
    vijos 1776 关押罪犯
    vijos 1780 开车旅行
    5、异步通知机制
  • 原文地址:https://www.cnblogs.com/6bing/p/3931236.html
Copyright © 2011-2022 走看看