zoukankan      html  css  js  c++  java
  • 1358B

    地址:https://codeforces.com/problemset/problem/1358/B

    题意:

    老太太 FREEDOM 打算在新冠期间组织聚会(freedom!!!冥主!!!自由!!!

    对于第 i 人,如果在她进院子的时候,院子里的人数(不包括自己) >= ai,她就来(嫌死得不够快

    求的是最多能有多少人参加聚会

    思路:

    显然,为了让更多的人能加入聚会,让要求低(院子里的人数 >= ai)先到,充到场人头数字,从而可以邀请更多要求高的,所以,将{a1,a2,a3,...,an}升序排序一下,利用数组的下标计“院子里到的人数”

    如:

    原: 1 5 4 5 1 9

    排序:1 1 4 5 5 9  a[i]

    下标:1 2 3 4 5 6  i ===> 院子里的人数

    条件:a[i] <= i 

    所以:1 1 4 5 5 9

    按照上方的逻辑,遇到“4”的时候,看似是无解的,但只要其后面的人可以来,就可以让后面的人与"4"同时到场,从而在“4”到场的时候,院子里的人数必然满足"4"要求,也必然满足后面的人的要求【互相充人头】

    由上,5位可以到,加上举办方 FREEDOM,共计6人可以到场 

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    const int N  = 1e5 + 10;
    int a[N];
    int main(){
        // freopen("x.txt","r",stdin);
        int t;
        cin >>t;
        while(t--){
            int n;
            cin >>n;
            for(int i = 1; i <= n;i++){
                scanf("%d",&a[i]);
            }
            sort(a+ 1,a+n+ 1);
            int ans =  0;
            for(int i = 1;i <= n;i++){
                if(a[i] <= i){
                    ans = i;
                }
            }
            cout << ans +  1 <<endl;
        }
        return 0;
    }
  • 相关阅读:
    Linux从程序到进程
    Linux用户与“最小权限”原则
    Linux进程关系
    Linux信号基础
    Linux进程基础
    Sublime Text 报“Pylinter could not automatically determined the path to lint.py
    Linux文本流
    Linux文件管理相关命令
    Linux命令行与命令
    Linux架构
  • 原文地址:https://www.cnblogs.com/expedition/p/13946249.html
Copyright © 2011-2022 走看看