QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#775350 | #9745. 递增序列 | bluejellyfish | WA | 66ms | 4692kb | C++23 | 1.4kb | 2024-11-23 15:36:27 | 2024-11-23 15:36:27 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int inf = numeric_limits<int>::max();
const int S = 64;
void miss() {
int n, k; cin >> n >> k;
vector<int> a(n + 1) , b(S , -1);
for(int i = 1 ; i <= n ; i ++) {
cin >> a[i];
if(a[i] != 10 && n == 200000) cout << i << " ";
}
auto check = [&](int x , int y) -> bool {
for(int i = 62 ; ~i ; i --) if((x >> i & 1) != (y >> i & 1)) {
int ok = 1;
if((x >> i & 1) < (y >> i & 1)) ok = 0;
if(b[i] == (ok ^ 1)) return false;
else b[i] = ok;
return true;
}
return true;
};
for(int i = 1 ; i < n ; i ++) if(!check(a[i],a[i + 1])) {
return cout << "0\n" , void();
}
vector<int> dp(S , -1);
auto dfs = [&](auto self , int pos , int limit) -> int{
if(!~pos) return 1;
if(!limit && dp[pos] != -1) return dp[pos];
int up = 1 , now = k >> pos & 1;
if(limit && !now) up = 0;
int ans = 0;
if(b[pos] == -1) for(int i = 0 ; i <= up ; i ++) ans += self(self,pos - 1,limit&(now == i));
else if(b[pos] <= up) ans += self(self,pos - 1,limit&(now == b[pos]));
if(!limit) dp[pos] = ans;
return ans;
};
cout << dfs(dfs,62,1) << "\n";
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
int T = 1;
cin >> T;
while(T--) miss();
//system("pause");
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3548kb
input:
1 4 17 3 2 5 16
output:
4
result:
ok single line: '4'
Test #2:
score: 0
Accepted
time: 40ms
memory: 3544kb
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 432345564227567616 414708220571820991 716398192192370638 0 1949654914769744 0 0 0 811009189367843523 0 0 0 114457959388827198 36028797018963968 0 0 91540211282631659 0 694703231769895640 144115188075855872 0 0 0 0 432345564227567616 65333152962117911 753346372609875093 180143985...
result:
ok 36156 lines
Test #3:
score: 0
Accepted
time: 66ms
memory: 3840kb
input:
66700 5 574806949 707283080 678928379 541095440 909663418 934562284 2 131740903 1072092807 29505236 1 288553982 996051310 3 327852411 555539857 562077878 310330495 5 43708614 467258834 418367471 258444521 166976259 1064316226 4 128498668 513637339 62151118 158694610 650278927 2 351983999 4118288 333...
output:
33554432 0 288553983 0 0 0 268435456 0 149009740 386781916 437566564 385875968 0 315141961 271302559 33554432 0 0 0 95224229 129359372 134217728 134217728 268435456 0 67108864 33554432 0 0 0 268435456 0 0 134217728 67108864 268435456 212106049 67108864 0 268435456 4450845 268435456 0 67108864 378512...
result:
ok 66700 lines
Test #4:
score: 0
Accepted
time: 35ms
memory: 3608kb
input:
36360 1 96 43 4 13 34 87 65 66 10 19 30 15 3 46 37 35 84 82 83 74 9 4 52 54 49 62 46 31 8 85 85 5 11 47 60 16 125 73 2 82 41 86 6 53 96 106 117 88 37 54 4 88 25 85 70 116 6 77 2 7 10 15 83 79 4 93 41 35 10 121 3 54 39 49 73 8 14 10 1 18 59 62 61 66 89 9 66 58 39 26 17 122 117 107 97 98 9 95 29 23 0 ...
output:
97 0 0 0 0 64 0 16 8 16 32 2 4 4 0 0 6 15 79 31 2 0 64 4 4 0 4 6 4 3 0 8 9 8 0 8 0 4 30 0 2 4 4 24 2 4 4 0 2 48 4 2 0 4 13 0 0 32 47 8 0 2 0 21 8 0 0 0 0 4 42 0 16 0 2 64 8 22 16 4 4 32 16 0 0 0 8 0 14 42 29 0 16 8 0 0 0 8 28 71 0 33 16 8 6 4 4 28 0 0 32 4 8 32 82 0 0 0 0 85 16 0 16 19 32 1 4 32 0 1...
result:
ok 36360 lines
Test #5:
score: -100
Wrong Answer
time: 21ms
memory: 4692kb
input:
1 200000 4 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1...
output:
18091 18092 18093 18094 18095 18096 18097 18098 18099 18100 18101 18102 18103 18104 18105 18106 18107 18108 18109 18110 18111 18112 18113 18114 18115 18116 18117 18118 18119 18120 18121 18122 18123 18124 18125 18126 18127 18128 18129 18130 18131 18132 18133 18134 18135 18136 18137 18138 18139 18140 ...
result:
wrong answer 1st lines differ - expected: '0', found: '18091 18092 18093 18094 18095 ...6 199997 199998 199999 200000 0'