zoukankan      html  css  js  c++  java
  • Gym-100712J 桶排序思想&反向思维


    给一群儿童分配糖果,每位儿童只能一包,满足一些条件,“公平分配”:

    相同年龄的分一样多,年龄大的必须分的比前者多。

    三行,第二行是儿童的年龄,第三行是包里的糖果


    思路: 数据够小,儿童年龄只在5到15,直接暴力,利用桶排序的思想,把儿童和糖果的数量存在a和b数组中,下标即是他们的标号,这样从1开始,默认就排了序。

    从5到15岁数遍历,下标a是从5开始,b是从1开始,

    这里从反面开始,只要b的数量小于当前当前儿童年龄i的数量(相同糖果的数量只能等于或者多于同一年龄儿童的数量),糖果数量就要前进,只要满住,儿童年龄前进一位。如果超过糖果数量最大50,则没找到满足,退出打印No,否则遍历完15岁,即全部找到。

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn = 1000+10;
    int a[maxn];
    int b[maxn];
    
    int main()
    {
        //    freopen("in.txt","r",stdin);
        int t,t1,t2;
        scanf("%d",&t);
        while(t--)
        {
            int n,m;
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            int dd = 0;
            cin>>n>>m;
            while(n--)
            {
                cin>>t1;
                a[t1]++;
            }
            while(m--)
            {
                cin>>t2;
                b[t2]++;
            }
            int pos = 0;
            for(int i = 5; i <= 15; i++)
            {
                if(a[i])
                {
                    pos++;
                    while(pos <= 50 && b[pos] < a[i])
                        pos++;
                    if(pos>50)
                    {
                        dd = 1;
                    }
                }
            }
            if(dd)
                puts("NO");
            else
                puts("YES");
        }
    
        return 0;
    }


  • 相关阅读:
    在python中处理XML
    正则表达式
    python 反射
    python模块概况,json/pickle,time/datetime,logging
    python装饰器
    python3内置函数详解
    python函数,lambda表达式,三目运算,列表解析,递归
    python数据类型及其常用方法
    python3的文件操作
    初识Docker
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7256609.html
Copyright © 2011-2022 走看看