QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#751863 | #9745. 递增序列 | clear_tea | WA | 121ms | 3580kb | C++20 | 1.8kb | 2024-11-15 21:03:44 | 2024-11-15 21:03:44 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
int ans;
vector<int> pos(70, -1);
void dfs(int k, int p) {
if (p == -1) {
ans++;
return;
}
if ((k >> p & 1) && pos[p] == -1) { //这位是1,那么可以选0,下一位开始任选
int t = 1;
for (int i = p - 1; i >= 0; i--) {
if (pos[i] == -1) {
t *= 2;
}
}
ans += t;
} else if ((k >> p & 1) && pos[p] == 0) {
int t = 1;
for (int i = p - 1; i >= 0; i--) {
if (pos[i] == -1) {
t *= 2;
}
}
ans += t;
return;
} else if (!(k >> p & 1) && pos[p] == 1) {
return;
}
// 这位是0,没得选,往下
dfs(k, p - 1);
}
void solve() {
int n, k;
cin >> n >> k;
ans = 0;
vector<int> a(n + 1);
for (int i = 1; i <= n; i++) cin >> a[i];
// 相邻判断某位上是否一定为某数,如果冲突直接输出0
// 最后考虑k的范围
for (int i = 2; i <= n; i++) {
for (int j = 63; j >= 0; j--) {
if ((a[i] >> j & 1) != (a[i - 1] >> j & 1)) {
if (pos[j] == -1) {
pos[j] = a[i - 1] >> j & 1;
break;
} else if (pos[j] != (a[i - 1] >> j & 1)) {
cout << "0\n";
return;
}
}
}
}
ans = 0;
dfs(k, 63);
cout << ans << '\n';
}
signed main() {
#ifdef ONLINE_JUDGE
#else
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
int t = 1;
cin >> t;
while (t--) {
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3568kb
input:
1 4 17 3 2 5 16
output:
4
result:
ok single line: '4'
Test #2:
score: -100
Wrong Answer
time: 121ms
memory: 3580kb
input:
36156 2 732025001343805266 563399128172323734 55283226774627822 7 388099190813067712 564150557919527813 457487771983557281 332055400678110195 760833651510929158 785768483273197875 690506113272551236 463276585748519124 2 798714574862593347 426890163990834364 434764725667883272 1 414708220571820990 42...
output:
288230376151711744 0 0 0 36028797018963968 0 0 0 0 0 9007199254740992 0 0 0 0 0 0 0 0 0 4503599627370496 0 0 0 0 0 0 0 2251799813685248 0 0 0 0 1125899906842624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 562949953421312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
result:
wrong answer 3rd lines differ - expected: '432345564227567616', found: '0'