QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#510578 | #8034. Ban or Pick, What's the Trick | 333zhan | AC ✓ | 2494ms | 445476kb | C++20 | 2.4kb | 2024-08-09 09:26:08 | 2024-08-09 09:26:08 |
Judging History
answer
/*
https://zhuanlan.zhihu.com/p/588646549
*/
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int inf = 1E18;
inline int read () {
int w = 1, s = 0; char ch = getchar ();
for (; ! isdigit (ch); ch = getchar ()) if (ch == '-') w = -1;
for (; isdigit (ch); ch = getchar ()) s = (s << 1) + (s << 3) + (ch ^ 48);
return s * w;
}
void solve () {
int n = read (), k = read ();
vector <int> a (n + 1), b (n + 1);
for (int i = 1; i <= n; i ++) {
a[i] = read ();
}
for (int i = 1; i <= n; i ++) {
b[i] = read ();
}
sort (a.begin () + 1, a.end (), greater ());
sort (b.begin () + 1, b.end (), greater ());
vector dp (2 * n + 1, vector (k + 1, vector <int> (k + 1)));
vector vis (2 * n + 1, vector (k + 1, vector <bool> (k + 1)));
auto dfs = [&] (auto &&self, int x, int c1, int c2) {
if (x == n * 2 + 1) {
return 0LL;
}
if (vis[x][c1][c2]) {
return dp[x][c1][c2];
}
vis[x][c1][c2] = true;
int &ans = dp[x][c1][c2];
int r1 = x / 2, r2 = (x - 1) / 2;
int b1 = r2 - c2, b2 = r1 - c1;
int p1 = c1 + b1 + 1, p2 = c2 + b2 + 1;
if (x & 1) {
ans = max (
p2 <= n ? -self (self, x + 1, c1, c2) : -inf,
p1 <= n && c1 < k ? a[p1] - self (self, x + 1, c1 + 1, c2) : -inf
);
} else {
ans = max (
p1 <= n ? -self (self, x + 1, c1, c2) : -inf,
p2 <= n && c2 < k ? b[p2] - self (self, x + 1, c1, c2 + 1) : -inf
);
}
return ans;
};
printf ("%lld\n", dfs (dfs, 1, 0, 0));
}
signed main () {
// ios::sync_with_stdio (false);
// cin.tie (nullptr);
int T = 1;
// cin >> T;
// T = read ();
while (T --) {
solve ();
}
return 0;
}
/*
dp[i][j][k] i轮a选j个,b选k个,接下来的最大分差
然后要求等价于己方分-对方分最大,所以自己要选自己最大,ban对方最大
进行i轮之前,a进行了t1 = (i) / 2轮,b进行了t2 = (i - 1) / 2轮
对于a,由于b选了k个,则ban了a (t2 - k)个,所以对于将要选的第j个是a的第(j + (t2 - k) + 1)大
对于b同理
最后注意选不能大于k,ban不能大于n
然后进行记忆化搜索
*/
这程序好像有点Bug,我给组数据试试?
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3788kb
input:
2 1 3 6 2 4
output:
2
result:
ok single line: '2'
Test #2:
score: 0
Accepted
time: 0ms
memory: 4072kb
input:
4 1 1 3 5 7 2 4 6 8
output:
0
result:
ok single line: '0'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3808kb
input:
4 2 4 6 7 9 2 5 8 10
output:
3
result:
ok single line: '3'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3684kb
input:
10 5 42 13 60 42 100 82 22 98 14 55 100 41 89 24 65 38 69 26 37 16
output:
41
result:
ok single line: '41'
Test #5:
score: 0
Accepted
time: 1ms
memory: 3752kb
input:
9 10 4 32 566 885 439 479 332 95 432 409 140 704 26 558 781 457 356 404
output:
58
result:
ok single line: '58'
Test #6:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
20 8 249 888 548 338 840 890 519 416 852 817 28 694 271 947 239 11 654 914 765 939 483 148 403 552 250 635 287 644 364 822 621 151 31 422 683 959 867 266 837 395
output:
1201
result:
ok single line: '1201'
Test #7:
score: 0
Accepted
time: 1ms
memory: 4144kb
input:
100 10 9813 7151 1299 6277 9002 7359 770 1582 3909 9113 1937 3436 846 9841 3378 5437 9443 9148 6862 6832 1910 1365 1328 26 7245 9468 6087 5828 8993 3378 6200 7242 6495 6783 7275 9837 5162 2140 3721 1586 7559 3721 9268 7186 1615 6648 5631 5752 3712 7856 7938 5414 9197 5259 3319 3616 3257 5880 2448 74...
output:
2174
result:
ok single line: '2174'
Test #8:
score: 0
Accepted
time: 246ms
memory: 91276kb
input:
40000 5 19274618 29347041 40087005 4241769 41812959 94623872 30100813 76644033 64979494 96963240 48832843 15280489 52008818 47041532 58608992 73517436 15625815 32168369 68934604 89208811 79580765 42310673 69912065 59918072 29961600 96203768 8736038 83397821 69327027 17923674 3664021 44005027 7651388...
output:
8194
result:
ok single line: '8194'
Test #9:
score: 0
Accepted
time: 2494ms
memory: 445472kb
input:
100000 10 85360465 81541239 77118024 87341741 99983425 10619868 1784917 20823381 74104953 35366414 80917288 72494315 44512062 20610367 84530471 73577105 48782904 9308066 74657628 58835630 19344370 85521394 91509750 31058798 76011614 78384876 52633286 93465152 62148686 46231760 69339331 74105686 4770...
output:
-46511
result:
ok single line: '-46511'
Test #10:
score: 0
Accepted
time: 1611ms
memory: 342248kb
input:
100000 8 97966860 93132965 91105978 98145980 96136361 98095980 91898843 97828255 96137986 92674932 99672275 98026414 94885662 97929838 99106723 94391077 91267613 96853827 93733155 92485556 96995248 96384012 94884352 98000896 96669725 99928856 97332280 99872674 95661884 94580201 93729696 94036134 933...
output:
719997458
result:
ok single line: '719997458'
Test #11:
score: 0
Accepted
time: 2463ms
memory: 445356kb
input:
100000 10 825482 722624 267613 468250 23954 516243 143403 670723 981589 165049 921948 937755 689696 884209 809289 617597 320055 989006 514430 118677 418833 455416 996092 75942 981847 841578 743224 765188 155881 88885 793562 443098 103960 252860 409855 761062 76141 791095 934136 654904 165921 892528 ...
output:
-990000017
result:
ok single line: '-990000017'
Test #12:
score: 0
Accepted
time: 67ms
memory: 86056kb
input:
100000 1 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 17...
output:
0
result:
ok single line: '0'
Test #13:
score: 0
Accepted
time: 2425ms
memory: 439824kb
input:
98765 10 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 17...
output:
0
result:
ok single line: '0'
Test #14:
score: 0
Accepted
time: 2466ms
memory: 445428kb
input:
100000 10 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 3300 3400 3500 3600 3700 3800 3900 4000 4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 5100 5200 5300 5400 5500 5600 5700 5800 5900 6000 6100 6200...
output:
990
result:
ok single line: '990'
Test #15:
score: 0
Accepted
time: 1564ms
memory: 342160kb
input:
100000 8 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 3300 3400 3500 3600 3700 3800 3900 4000 4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 5100 5200 5300 5400 5500 5600 5700 5800 5900 6000 6100 6200 6300 6400 6...
output:
-210
result:
ok single line: '-210'
Test #16:
score: 0
Accepted
time: 1242ms
memory: 310988kb
input:
100000 7 100 100 100 100 100 100 100 100 100 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 3300 3400 3500 3600 3700 3800 3900 4000 4100 4200 4300 4400 4500 4600 4700 4800 4900 5000 5100 5200 5300 5400 5500 5600 5700 5800 5900 6000 ...
output:
495
result:
ok single line: '495'
Test #17:
score: 0
Accepted
time: 0ms
memory: 3948kb
input:
10 1 8065 3960 5950 4916 7037 9081 4664 991 2963 2023 1929 5961 6981 4037 8037 5077 9076 4333 987 2993
output:
331
result:
ok single line: '331'
Test #18:
score: 0
Accepted
time: 0ms
memory: 4080kb
input:
10 1 12059 13033 14987 17023 18912 13943 15325 18035 11028 15944 9096 5574 9918 2008 4972 3010 6014 4063 7020 7935
output:
9413
result:
ok single line: '9413'
Test #19:
score: 0
Accepted
time: 2462ms
memory: 445476kb
input:
100000 10 33589031 94402032 15451966 18734093 23340038 54426975 29018039 87610093 21720091 60720059 74463907 1668943 92689914 13185942 34638088 22349950 68300959 37067936 66069935 44771969 54993945 97723927 71534043 41376065 49044099 26260910 95412939 34924950 8081035 97409955 15210988 3904030 42905...
output:
2293
result:
ok single line: '2293'
Test #20:
score: 0
Accepted
time: 2406ms
memory: 434584kb
input:
97531 10 44980096 40903091 48238954 39235056 63363907 30959947 54589912 60278034 40498052 40472092 53600096 95261061 44850031 60849970 70460903 19942967 57915027 20974950 84483083 67205058 64737917 61534064 21163000 3865058 63755925 53229942 58044971 44362014 59796073 73668038 70398039 15954941 4399...
output:
-1982
result:
ok single line: '-1982'
Test #21:
score: 0
Accepted
time: 2459ms
memory: 445432kb
input:
100000 10 73275029 69525566 48019036 51789525 75291087 79602505 57898093 72934599 48534082 64673022 61603091 48189020 82966517 43186569 60475565 38493541 84371503 67667001 60982577 83528550 41760078 47507036 65662084 86798562 51758087 86058034 70608072 61948015 64147080 52814069 56096008 57639520 44...
output:
372187196
result:
ok single line: '372187196'
Test #22:
score: 0
Accepted
time: 1634ms
memory: 342140kb
input:
100000 8 54933605 45082197 59209212 24522567 2360460 16630792 26719167 18868794 43272578 7040449 58297827 41113228 43694983 45906551 25659648 2858959 11757030 18069018 27130260 58678238 261600 14668160 58681243 59750394 37739953 9292745 22927199 23426344 56079647 34319999 285620 10944549 58563541 20...
output:
-240001028
result:
ok single line: '-240001028'
Extra Test:
score: 0
Extra Test Passed