刚刚 T1 数据实在太水了吧
  • 板块学术版
  • 楼主IvanZhang2009
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/1/17 18:13
  • 上次更新2023/10/24 03:49:30
查看原帖
刚刚 T1 数据实在太水了吧
447479
IvanZhang2009楼主2023/1/17 18:13

rt,因为 4k(4k+1)(4k+2)(4k+3)=04k\oplus(4k+1)\oplus(4k+2)\oplus(4k+3)=0,所以后一半数据暴力,前十个点找一下存在的这种情况就过了???

int n;
int a[200005];
void Main() {
	cin>>n;
	if(n<=22){
		REP(i,0,n)cin>>a[i];
		REP(i,1,(1<<n)){
			int p=0;
			REP(j,0,n)if((i>>j)&1)p^=a[j];
			if(p==0){
				cout<<__builtin_popcount(i)<<endl;
				REP(j,0,n)if((i>>j)&1)cout<<j+1<<' ';
				cout<<endl;
				return;
			}
		}
	}
	REP(i,0,n){
		int x;
		cin>>x;
		a[x]=i+1;
	}
	if(a[1]&&a[2]&&a[3]){
		cout<<3<<endl;
		cout<<a[1]<<' '<<a[2]<<' '<<a[3]<<endl;
		return;
	}
	REP(i,0,99997){
		if(i%4)continue;
		if(a[i]&&a[i+1]&&a[i+2]&&a[i+3]){
			cout<<4<<endl;
			cout<<a[i]<<' '<<a[i+1]<<' '<<a[i+2]<<' '<<a[i+3]<<endl;
			return;
		}
	}
}

显然的 hack:

input:

24
9 10 11 12 16 20 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800

(后面一大串是因为特判了 n22n\le22

possible ans:

6
1 2 3 4 5 6

output:

2023/1/17 18:13
加载中...