QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#236282 | #7644. Good Splits | ucup-team870 | AC ✓ | 97ms | 20348kb | C++20 | 2.4kb | 2023-11-03 19:50:07 | 2023-11-03 19:50:08 |
Judging History
answer
#include <bits/stdc++.h>
#define rep(i,l,r) for(int i=l; i<=r; i++)
#define reps(i,l,r,s) for(int i=l; i<=r; i+=s)
#define per(i,r,l) for(int i=r; i>=l; i--)
#define IOS {cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);}
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int N = 4040;
int n, mod, f[N], g[N][N], h[N], C[N][N], dp[N][N], f0[N], ksj[N];
int main() {
scanf("%d%d", &n, &mod);
C[0][0] = 1;
rep (i, 1, 2*n) {
C[i][0] = 1;
rep (j, 1, i) C[i][j] = (C[i-1][j-1] + C[i-1][j]) % mod;
}
f0[0] = 1;
reps (i, 2, 2*n, 2) {
reps (j, 0, i-1, 2) {
f0[i] = (f0[i] + 1ll * f0[i-j-2] * f0[j]) % mod;
}
}
f[0] = 1;
reps (i, 2, 2*n, 2) {
reps (j, 0, i, 2) {
f[i] = (f[i] + 1ll * f0[i-j] * f0[j] % mod * C[i][j]) % mod;
}
// cout << i<<' '<<f[i]<<endl;
}
g[0][0] = 1;
rep (i, 1, 2*n) {
reps (j, 0, 2*n, 2) {
reps (k, 0, j, 2) {
g[i][j] = (g[i][j] + 1ll * g[i-1][j-k] * f[k]) % mod;
}
}
}
h[0] = 1;
reps (i, 2, 2*n, 2) {
h[i] = f[i];
reps (j, 2, i-1, 2) {
h[i] = (h[i] - 2ll * h[j] * g[j][i-j]) % mod;
}
if (h[i] < 0) h[i] += mod;
h[i] = h[i] * 1ll * ((mod+1)/2) % mod;
// cout << i <<' '<<h[i]<<endl;
}
// ksj[0] = 1;
// reps (i, 2, 2*n, 2) {
// reps (j, 2, i, 2) {
// ksj[i] = (ksj[i] + 1ll * h[j] * ksj[i-j]) % mod;
// }
// }
dp[0][0] = 1;
// reps (i, 1, 2*n, 1) {
// reps (j, 0, 2*n, 2) {
// reps (k, 0, j, 2) {
// dp[i][j] = (dp[i][j] + 1ll * dp[i-1][j-k] * ksj[k]) % mod;
// }
// }
// }
ksj[0] = 1;
reps(j, 1, 2*n, 1) {
reps (k, 0, 0, 2) {
dp[j][0] = (dp[j][0] + 1ll * dp[j-1][0] * ksj[k]) % mod;
}
}
reps (i, 2, 2*n, 2) {
reps (j, 2, i, 2) {
ksj[i] = (ksj[i] + 1ll * h[j] * dp[j][i-j]) % mod;
// if (i == 6) {
// cout << h[j] <<' '<<dp[j][i-j]<<"$"<<endl;
// }
}
reps(j, 1, 2*n, 1) {
reps (k, 0, i, 2) {
dp[j][i] = (dp[j][i] + 1ll * dp[j-1][i-k] * ksj[k]) % mod;
}
}
cout << ksj[i] << '\n';
}
return 0;
}
这程序好像有点Bug,我给组数据试试?
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 7856kb
input:
5 998244353
output:
1 3 14 84 592
result:
ok 5 number(s): "1 3 14 84 592"
Test #2:
score: 0
Accepted
time: 0ms
memory: 10112kb
input:
20 998244353
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 337584612 503820623 71483496 12733593 474907036 203223726 565209211 487441118 992424798 625482036
result:
ok 20 numbers
Test #3:
score: 0
Accepted
time: 0ms
memory: 10420kb
input:
30 147084737
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 43415138 115604731 88255570 6762644 25928144 117374310 119291296 29414136 87790057 136053957 103827626 145662835 60977924 8837626 61475022 108138661 88536961 105609125 140429327 77714436
result:
ok 30 numbers
Test #4:
score: 0
Accepted
time: 0ms
memory: 10700kb
input:
50 259851877
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 77732735 120479281 107558023 219154876 82657644 224090144 253190966 148874121 53920249 82785846 244357960 88406017 106161945 35184035 131007270 222579610 212725099 114435754 64242919 39323449 211238313 156440547 84150382 242052946 50634162 120017303 2...
result:
ok 50 numbers
Test #5:
score: 0
Accepted
time: 14ms
memory: 11432kb
input:
100 175127923
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 162456689 171123145 54532804 71333538 68283136 25628469 138841774 142350839 27676343 15931022 158187457 43201304 18465009 37939972 169592319 94983552 152752931 69017296 46403905 173424585 170947507 7870926 90491276 10182721 58907963 136216980 28163587...
result:
ok 100 numbers
Test #6:
score: 0
Accepted
time: 39ms
memory: 14636kb
input:
150 367542041
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 337584612 190675313 252320457 264200037 124276323 161424010 184935571 230223063 343780965 314302578 342350468 265272499 173792750 339843799 301192856 263531782 208259173 113525686 44197147 288967350 139023077 142942582 324678736 318907769 315638511 40...
result:
ok 150 numbers
Test #7:
score: 0
Accepted
time: 67ms
memory: 17648kb
input:
177 861641813
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 337584612 51986430 817568411 233712834 530886113 262319436 602763301 391560421 714952237 234059952 504165773 214901044 343336951 654631331 578657419 506328910 26764748 407306588 36662800 819329882 372916107 103054885 512356475 207029843 192047130 1038...
result:
ok 177 numbers
Test #8:
score: 0
Accepted
time: 1ms
memory: 7788kb
input:
1 998244353
output:
1
result:
ok 1 number(s): "1"
Test #9:
score: 0
Accepted
time: 96ms
memory: 18228kb
input:
200 864048671
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 337584612 42358998 716480375 849841780 472934607 500922480 184767796 279937457 399183954 512063087 91797677 107549673 485929841 293677006 593203756 235501697 372544850 500179291 849823101 602694217 345293985 459931747 386664093 196167251 265892579 252...
result:
ok 200 numbers
Test #10:
score: 0
Accepted
time: 94ms
memory: 20348kb
input:
199 958494587
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 337584612 623069921 583730251 536976835 256616783 340763703 344818742 765288755 200573977 666742925 957661404 606909377 32714935 246057767 23198149 389527637 588746573 223336510 430768410 501175382 380964997 647932740 845833201 113681916 396614824 546...
result:
ok 199 numbers
Test #11:
score: 0
Accepted
time: 97ms
memory: 18032kb
input:
198 165619889
output:
1 3 14 84 592 4659 39699 359004 3399164 33378417 6344834 20536013 73289310 162017284 159458288 100856961 164827673 70631917 154742952 14393421 27830529 37917167 68934527 54693629 76175385 34254720 114820104 69340313 35844068 25551171 137354127 120937326 10672731 81957539 132401938 29387190 74534300 ...
result:
ok 198 numbers
Extra Test:
score: 0
Extra Test Passed