1 条题解

  • 0
    @ 2026-1-18 22:50:23
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+5;
    vector<int> b[N];
    int main()
    {
    	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    	int n; cin>>n;
    	for (int i=1;i<=n;i++)
    	{
    		int x; cin>>x;
    		b[x].push_back(i);
    	}
    	int q; cin>>q;
    	while(q--)
    	{
    		int m; cin>>m;
    		int last=-1;
    		bool flag=true;
    		while(m--)
    		{
    			int x; cin>>x;
    			if(!flag)continue;
    			int l=0, r=b[x].size()-1;//注意有可能 r=0 或 -1 
    			int pos=-1;
    			while (l<=r)
    			{
    				int mid=(l+r)>>1;
    				if (b[x][mid]>last) pos=mid, r=mid-1;
    				else l=mid+1;
    			}
    			if (pos==-1) flag=false;
    			else last=b[x][pos];
    		}
    		if (flag) cout<<"YES\n";
    		else cout<<"NO\n";
    	}
    	return 0;
    }
    
    
    
    • 1

    信息

    ID
    615
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    55
    已通过
    9
    上传者