关于普及组T2
  • 板块学术版
  • 楼主zhang_kevin
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/4/22 18:06
  • 上次更新2023/10/23 17:46:54
查看原帖
关于普及组T2
679961
zhang_kevin楼主2023/4/22 18:06

请问那些 1s 左右完成的是什么思路?为什么我 3s

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 1;
inline vector<int> change(vector<int> vec, int x){
	vector<int> res;
	for(int i = 0; i < vec.size(); i++){
		res.push_back(vec[i]^x);
	}
	return res;
}
inline void Solve(){
	vector<int> vec;
	int n, k, a, Xor = 0;
	cin >> n >> k;
	if(n % 2 == 0){
		k %= 2;
		for(int i = 1; i <= n; i++){
			cin >> a;
			Xor ^= a;
			vec.push_back(a);
		}
		while(k--){
			vec = change(vec, Xor);
			Xor = 0;
			for(auto p : vec) Xor ^= p;
		}
		for(int i = 0; i < vec.size(); i++) cout << vec[i] << " \n"[i==vec.size()-1];
		//cout << endl;
	}else{
		if(k > 0) k = 1;
		for(int i = 1; i <= n; i++){
			cin >> a;
			Xor ^= a;
			vec.push_back(a);
		}
		while(k--){
			vec = change(vec, Xor);
			Xor = 0;
			for(auto p : vec) Xor ^= p;
		}
		for(int i = 0; i < vec.size(); i++) cout << vec[i] << " \n"[i==vec.size()-1];
		//cout << endl;
	}
	return;
}
signed main(){
	//freopen("output.txt", "w", stdout);
	int T;
	cin >> T;
	while(T--){
		Solve();
	}
	return 0;
}
2023/4/22 18:06
加载中...