只是记录一下vector的用法

  v.push_back(x)加入x

  v.pop_back()弹出最后一个元素

  v[x]=v.back(),v.pop_back()删除x,但是会打乱vector顺序

  vector的第i个元素可以直接用v[i]

#include<iostream> 
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath> 
#include<algorithm> 
#include<vector>
using namespace std;
const int maxn=1000010,inf=1e9;
int n,m,L;
int a[maxn],b[maxn];
vector<int>v[maxn];
inline void read(int &k)
{
    int f=1;k=0;char c=getchar();
    while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
    while(c<='9'&&c>='0')k=k*10+c-'0',c=getchar();
    k*=f;
}
int main()
{
    read(n);
    for(int i=1;i<=n;i++)read(a[i]),v[a[i]].push_back(i);
    read(m);
    for(int i=1;i<=m;i++)
    {
        read(L);
        for(int j=1;j<=L;j++)read(b[j]);
        int now=0,flag=0;
        for(int j=1;j<=L;j++)
        {
            int l=0,r=v[b[j]].size()-1;
            if(r<0){puts("NIE");flag=1;break;} 
            while(l<r)
            {
                int mid=(l+r)>>1;
                if(v[b[j]][mid]>now)r=mid;
                else l=mid+1;
            }
            if(v[b[j]][l]>now)now=v[b[j]][l];
            else {puts("NIE");flag=1;break;}
        }
        if(!flag)puts("TAK");
    }
} 
View Code

相关文章:

  • 2021-08-04
  • 2021-12-13
  • 2021-09-28
  • 2022-12-23
  • 2022-12-23
  • 2021-06-25
  • 2021-08-27
  • 2021-08-24
猜你喜欢
  • 2021-07-06
  • 2021-11-11
  • 2022-03-06
  • 2021-07-23
  • 2021-08-29
  • 2021-06-21
  • 2021-09-07
相关资源
相似解决方案