ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#215335 | #2713. 8.2t2 | KXG | 100 | 210ms | 4428kb | C++11 | 1.5kb | 2024-11-28 19:17:47 | 2024-11-28 23:10:38 |
answer
#include <cstdio>
#include <algorithm>
#include <functional>
using namespace std;
struct decision {
int apos, bpos;
long long value;
};
bool operator < (decision a, decision b) {
return a.value < b.value;
}
int n, m;
long long a[100010], b[100010];
decision dp[1000010];
decision nexta(decision now) {
decision res;
res.apos = now.apos + 1;
res.bpos = now.bpos;
if (res.apos <= n) {
res.value = now.value + a[res.apos];
} else {
res.value = -1e18;
}
return res;
}
decision nextb(decision now) {
decision res;
res.apos = now.apos;
res.bpos = now.bpos + 1;
if (res.bpos <= n) {
res.value = now.value + b[res.bpos];
} else {
res.value = -1e18;
}
return res;
}
int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%lld", &a[i]);
}
for (int i = 1; i <= n; i++) {
scanf("%lld", &b[i]);
b[i] += a[i];
}
sort(a + 1, a + n + 1, greater<int>());
sort(b + 1, b + n + 1, greater<int>());
long long ans = 0;
for (int i = 1; i <= m; i++) {
if (i > 3 * n) {
dp[i] = dp[3 * n];
} else if (i >= 2) {
dp[i] = max(nexta(dp[i - 1]), nextb(dp[i - 2]));
} else {
dp[i] = nexta(dp[i - 1]);
}
// printf("%d : %d %d %lld\n", i, dp[i].apos, dp[i].bpos, dp[i].value);
ans ^= dp[i].value;
}
printf("%lld\n", ans);
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 528kb
input:
4 10 2 2 4 8 8 4 7 10
output:
2
result:
ok 1 number(s): "2"
Test #2:
score: 10
Accepted
time: 0ms
memory: 532kb
input:
5 10 51072389 300657765 633439665 787090487 68456665 196385267 67864372 385977125 213928095 324494080
output:
3719844854
result:
ok 1 number(s): "3719844854"
Test #3:
score: 10
Accepted
time: 0ms
memory: 532kb
input:
5 10 48720179 139181569 338164905 149648143 77222193 187724219 91625887 540142777 43334953 184586388
output:
215635088
result:
ok 1 number(s): "215635088"
Test #4:
score: 10
Accepted
time: 33ms
memory: 3692kb
input:
100000 102662 33421051 125633985 365251021 255717315 262377226 360896081 5951202 90071401 154444767 ...
output:
69628185742891
result:
ok 1 number(s): "69628185742891"
Test #5:
score: 10
Accepted
time: 28ms
memory: 3688kb
input:
100000 102838 588484254 69882126 151341881 500364775 68104321 134809939 50886121 98623841 274710921 ...
output:
2211168290969
result:
ok 1 number(s): "2211168290969"
Test #6:
score: 10
Accepted
time: 32ms
memory: 3684kb
input:
100000 102858 816229225 31491762 141788824 11587861 40202296 167103151 76959748 111706177 185028195 ...
output:
6040329651388
result:
ok 1 number(s): "6040329651388"
Test #7:
score: 10
Accepted
time: 31ms
memory: 2088kb
input:
100000 100 12830259 71768257 32489793 11032029 534815873 25056247 9333295 338811835 392555485 787185...
output:
4970387228
result:
ok 1 number(s): "4970387228"
Test #8:
score: 10
Accepted
time: 35ms
memory: 2084kb
input:
100000 100 72601214 53610670 93861411 367396001 45683503 4337367 98950041 888815737 409387861 106118...
output:
134182801545
result:
ok 1 number(s): "134182801545"
Test #9:
score: 10
Accepted
time: 24ms
memory: 4428kb
input:
100000 150000 667 605 113 157 314 281 1 234 801 121 561 414 25 953 434 233 421 601 993 969 209 695 7...
output:
33097015
result:
ok 1 number(s): "33097015"
Test #10:
score: 10
Accepted
time: 27ms
memory: 4428kb
input:
100000 150000 96 945 103 451 167 433 537 867 781 656 145 507 381 960 753 700 93 133 122 952 393 985 ...
output:
7610868
result:
ok 1 number(s): "7610868"