zoukankan      html  css  js  c++  java
  • ZJNU 2351

    由题意得,如果有个人从前往后能找到第一个不低于自己等级的任务,就会接取其后所有任务

    那么就可以让输入数据处理成递增数列

    例如1 3 5 4 6 2 7 7 3

    可以处理成1 3 5 5 6 6 7 7 7

    因为进来的成员总是从前往后看,所以只要每次查找剩余的任务里第一个大于等于它的等级的即可

    如果没有,接取最后一个

    因为处理成递增数列了,所以可以二分查找答案

    #include<bits/stdc++.h>
    using namespace std;
    int ar[100005];
    int main(){
        ios::sync_with_stdio(0);
        cin.tie(0);cout.tie(0);
        int T,n,m,i,d,ed,ans;
        cin>>T;
        while(T--){
            cin>>n>>m>>ar[0];
            for(i=1;i<n;i++){
                cin>>d;
                ar[i]=max(d,ar[i-1]);
            }
            ed=n;
            for(ans=i=0;ed&&i<m;i++){
                cin>>d;
                d=lower_bound(ar,ar+ed,d)-ar;
                if(d==ed)
                    ed--;
                else
                    ed=d;
                ans++;
            }
            for(;i<m;i++)
                cin>>d;
            cout<<ans<<'
    ';
        }
        
        return 0;
    }
  • 相关阅读:
    4.26上午
    4.25下午
    4.19上午
    4.18上午
    7.26
    7.25
    7.21-7.22
    7.22
    7.21
    7.11-7.15
  • 原文地址:https://www.cnblogs.com/stelayuri/p/12238940.html
Copyright © 2011-2022 走看看