1 条题解

  • 0
    @ 2024-6-9 21:05:58
    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=3005;
    int n,m,k,s,t,a[N],vis[N],K,Q,ans[N];
    deque<int> e[N];
    void dfs(int u){
    	vis[u]=1;
    	for (int &v:e[u]){
    		if (!vis[v]) dfs(v);
    	}
    }
    int ok(int x){
    	int u=a[x],v=a[x+1];
    	if (!(x&1)) swap(u,v);
    	memset(vis,0,sizeof(vis));
    	dfs(v);
    	if (!vis[u]) {e[u].push_back(v);return 1;}
    	return 0; 	
    }
    int main(){
    	cin>>n>>K>>Q;
    	for (int i=1;i<=n;++i) cin>>a[i];
    	int r=1;
    	for (int l=1;l<=n;++l){
    		r=max(l,r);
    		while (r<n && ok(r)) ++r;
    		ans[l]=r;
    		if (r>l){
    			if (l&1) e[a[l]].pop_front();
    			else e[a[l+1]].pop_front();
    		} 
    	}
    	while (Q--){
    		cin>>s>>t;
    		cout<<(ans[s]>=t?"YES":"NO")<<"\n";
    	} 
    }
    
    • 1

    信息

    ID
    804
    时间
    2000ms
    内存
    1000MiB
    难度
    10
    标签
    递交数
    6
    已通过
    3
    上传者