社区讨论
神秘做法求hack\证明复杂度
P11008『STA - R7』异或生成序列参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m0bto24f
- 此快照首次捕获于
- 2024/08/27 10:42 2 年前
- 此快照最后确认于
- 2025/11/04 22:19 4 个月前
思路就是排除不可能的 然后暴力检查。
CPP#include<bits/stdc++.h>
using namespace std;
int b[2000005],n,rud;
int p[2000005],sm[2000005],mp[2000005];
inline bool creatone(int st) {
int xs = st;
for(int i = 1;i < n;++i) {
if((xs ^ b[i]) == st || (xs ^ b[i]) < 1 || (xs ^ b[i]) > n) return 0;
xs ^= b[i];
}
xs = st;
for(int i = 1;i <= n;++i) cout << xs << " ",xs ^= b[i];
cout << '\n';
return 1;
}
void solve() {
cin >> n;
++rud;
for(int i = 1;i < n;++i) cin >> b[i],sm[i] = sm[i - 1] ^ b[i],mp[sm[i]] = rud;
for(int p1 = 1;p1 <= n;++p1) {
if(p1 != b[1] && mp[p1] != rud) if(creatone(p1)) break;
}
return void();
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
while(T-->0)solve();
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...