ZJNU 2351 - 快乐

Posted stelayuri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZJNU 2351 - 快乐相关的知识,希望对你有一定的参考价值。

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

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

例如1 3 5 4 6 2 7 7 3

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

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

如果没有,接取最后一个

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

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int ar[100005];
 4 int main(){
 5     ios::sync_with_stdio(0);
 6     cin.tie(0);cout.tie(0);
 7     int T,n,m,i,d,ed,ans;
 8     cin>>T;
 9     while(T--){
10         cin>>n>>m>>ar[0];
11         for(i=1;i<n;i++){
12             cin>>d;
13             ar[i]=max(d,ar[i-1]);
14         }
15         ed=n;
16         for(ans=i=0;ed&&i<m;i++){
17             cin>>d;
18             d=lower_bound(ar,ar+ed,d)-ar;
19             if(d==ed)
20                 ed--;
21             else
22                 ed=d;
23             ans++;
24         }
25         for(;i<m;i++)
26             cin>>d;
27         cout<<ans<<
;
28     }
29     
30     return 0;
31 }

 

以上是关于ZJNU 2351 - 快乐的主要内容,如果未能解决你的问题,请参考以下文章

bzoj2351(矩阵哈希)

BZOJ2351Matrix 矩阵hash详解

TS2351:当我做一个简单的 Vue 导入时,这个表达式是不可构造的

LeetCode 2351. 第一个出现两次的字母

LeetCode 2351. 第一个出现两次的字母

POJ2351 ZOJ1916 UVA10371 Time Zones时区计算