vector输入问题 RE
查看原帖
vector输入问题 RE
1231078
bjzjh楼主2024/10/30 16:10
#include<bits/stdc++.h>
using namespace std;
int read(){
    int t;
    int f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-'){
            f=-f;
        }
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        t=(t<<1)+(t<<3)+(ch^48);
        ch=getchar();
    }
    return t*f;
}
const int N=2e5+10;
bitset < N > f[101];
vector < int > a[N];
vector < int > flag[N];
int book[N],n,k,q,t,len[N],x,y;
int main(){
	t=read(); 
	while(t--){
        n=read(); k=read(); q=read();
		for(int i=1;i<=n;i++){
			len[i]=read();
			cout<<"len is OK\n";
//			a[i].resize(len[i]+1);
//			flag[i].resize(len[i]+1); 
//            a[i].push_back(0);
			for(int j=1;j<=len[i];j++){
				a[i].push_back(read());
				
				
//				cout<<i<<" is First\n";
				if(a[i][j]==1){
//					cout<<"flag[i][j] is 1";
					flag[i][j]=1;
				}
				else{
//					cout<<"flag[i][j] is 0";
					flag[i][j]=0;
				}
//				cout<<i<<" is End\n";
			}
		}
		for(int l=1;l<=100;l++){
			for(int i=1;i<N;i++){
				book[i]=0;
				f[l][i]=false;
			}
			for(int i=1;i<=n;i++){
				int pre=-k;
				for(int j=1;j<=len[i];j++){
					if(j-pre+1<=k){
						int value=a[i][j];
						if(!book[value]){
							book[value]=i;
						}
						else if(book[value]!=i){
							book[value]=-1;
						}
						f[l][value]=0;
					}
					if(flag[i][j]){
						pre=j;
					}
				}
			} 
			for(int i=1;i<=n;i++){
				for(int j=1;j<len[i];j++){
					int value=a[i][j];
					if(book[value]!=0&&book[value]!=i){
						flag[i][j]=1;
					}
					else{
						flag[i][j]=0;
					}
				}
			} 
		}
		for(int i=1;i<=q;i++){
			cin>>x>>y;
			if(f[x][y]){
				cout<<1<<'\n';
			}
			else{
				cout<<0<<'\n';
			}
		}
	}
}
2024/10/30 16:10
加载中...