QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#262245 | #7766. 栞 | zhouhuanyi | 100 ✓ | 55ms | 4504kb | C++14 | 1.3kb | 2023-11-23 17:05:57 | 2023-11-23 17:05:57 |
Judging History
answer
#include<iostream>
#include<cstdio>
#define N 500
#define mod 998244353
using namespace std;
int read()
{
char c=0;
int sum=0;
while (c<'0'||c>'9') c=getchar();
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum;
}
void Adder(int &x,int d)
{
x+=d;
if (x>=mod) x-=mod;
return;
}
void Adder2(int &x,int d)
{
x+=d;
if (x<0) x+=mod;
return;
}
int n,k,fac[N+1],q[N+1],F[N+1],maxn[N+1],dp[N+1][N+1];
int main()
{
fac[0]=1;
for (int i=1;i<=N;++i) fac[i]=1ll*fac[i-1]*i%mod;
n=read(),k=read();
for (int i=1;i<=n;++i) q[i]=read(),maxn[i]=max(maxn[i-1],q[i]);
for (int i=0;i<=n;++i)
{
F[i]=fac[i];
for (int j=1;j<=i-1;++j) Adder2(F[i],-1ll*F[j]*fac[i-j]%mod);
}
dp[0][0]=1;
for (int i=1;i<=k;++i)
for (int j=1;j<=n-(k-i);++j)
for (int t=j;t>=1;--t)
{
if (j!=t&&q[t]>q[t+1]) break;
if (j==n-(k-i))
{
if (q[t]>maxn[t-1]) Adder(dp[i][j],1ll*dp[i-1][t-1]*((i!=k)?F[j-t+1]:fac[j-t+1])%mod);
else
{
if (j!=t&&q[t+1]<maxn[t-1]) continue;
Adder(dp[i][j],1ll*dp[i-1][t-1]*fac[j-t]%mod);
}
}
else
{
if (q[t]<maxn[t-1]) continue;
Adder(dp[i][j],1ll*dp[i-1][t-1]*((i!=k)?F[j-t+1]:fac[j-t+1])%mod);
}
}
printf("%d\n",dp[k][n]);
return 0;
}
详细
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 1ms
memory: 3524kb
input:
6 1 1 2 3 4 5 6
output:
720
result:
ok 1 number(s): "720"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3512kb
input:
6 3 1 2 5 3 4 6
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3572kb
input:
6 3 1 2 4 3 6 5
output:
3
result:
ok 1 number(s): "3"
Test #4:
score: 0
Accepted
time: 1ms
memory: 3576kb
input:
6 5 1 2 3 5 4 6
output:
4
result:
ok 1 number(s): "4"
Test #5:
score: 0
Accepted
time: 1ms
memory: 3524kb
input:
6 5 1 2 3 5 4 6
output:
4
result:
ok 1 number(s): "4"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3536kb
input:
6 4 1 3 2 4 6 5
output:
3
result:
ok 1 number(s): "3"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3460kb
input:
6 5 1 3 2 5 4 6
output:
2
result:
ok 1 number(s): "2"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3572kb
input:
6 3 1 2 3 6 5 4
output:
13
result:
ok 1 number(s): "13"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3540kb
input:
6 4 1 2 5 4 3 6
output:
3
result:
ok 1 number(s): "3"
Test #10:
score: 0
Accepted
time: 1ms
memory: 3572kb
input:
6 3 1 2 5 4 3 6
output:
0
result:
ok 1 number(s): "0"
Subtask #2:
score: 20
Accepted
Dependency #1:
100%
Accepted
Test #11:
score: 20
Accepted
time: 2ms
memory: 3468kb
input:
9 9 1 2 3 4 5 6 7 8 9
output:
1
result:
ok 1 number(s): "1"
Test #12:
score: 0
Accepted
time: 0ms
memory: 3808kb
input:
9 3 1 2 3 4 5 6 9 7 8
output:
3447
result:
ok 1 number(s): "3447"
Test #13:
score: 0
Accepted
time: 1ms
memory: 3552kb
input:
9 7 1 3 2 4 6 5 7 8 9
output:
3
result:
ok 1 number(s): "3"
Test #14:
score: 0
Accepted
time: 0ms
memory: 3572kb
input:
9 5 1 2 3 4 5 6 7 9 8
output:
531
result:
ok 1 number(s): "531"
Test #15:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
9 9 1 4 3 2 5 6 7 8 9
output:
1
result:
ok 1 number(s): "1"
Test #16:
score: 0
Accepted
time: 0ms
memory: 3540kb
input:
9 2 1 2 3 4 5 6 7 9 8
output:
29093
result:
ok 1 number(s): "29093"
Test #17:
score: 0
Accepted
time: 0ms
memory: 3732kb
input:
9 4 1 2 3 4 5 6 7 9 8
output:
2109
result:
ok 1 number(s): "2109"
Test #18:
score: 0
Accepted
time: 1ms
memory: 3820kb
input:
9 8 1 2 3 5 4 7 6 8 9
output:
4
result:
ok 1 number(s): "4"
Test #19:
score: 0
Accepted
time: 1ms
memory: 3576kb
input:
9 7 1 2 3 4 5 7 6 9 8
output:
23
result:
ok 1 number(s): "23"
Test #20:
score: 0
Accepted
time: 0ms
memory: 3588kb
input:
9 7 1 2 3 4 5 7 6 9 8
output:
23
result:
ok 1 number(s): "23"
Subtask #3:
score: 30
Accepted
Test #21:
score: 30
Accepted
time: 54ms
memory: 4240kb
input:
500 369 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
151242732
result:
ok 1 number(s): "151242732"
Test #22:
score: 0
Accepted
time: 49ms
memory: 4020kb
input:
500 261 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
175105582
result:
ok 1 number(s): "175105582"
Test #23:
score: 0
Accepted
time: 19ms
memory: 3728kb
input:
500 79 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...
output:
328555836
result:
ok 1 number(s): "328555836"
Test #24:
score: 0
Accepted
time: 52ms
memory: 4132kb
input:
500 306 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
738246233
result:
ok 1 number(s): "738246233"
Test #25:
score: 0
Accepted
time: 47ms
memory: 4140kb
input:
500 291 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
90157368
result:
ok 1 number(s): "90157368"
Test #26:
score: 0
Accepted
time: 49ms
memory: 4332kb
input:
500 268 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
582110163
result:
ok 1 number(s): "582110163"
Test #27:
score: 0
Accepted
time: 51ms
memory: 4052kb
input:
500 295 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
551109392
result:
ok 1 number(s): "551109392"
Test #28:
score: 0
Accepted
time: 31ms
memory: 3836kb
input:
500 137 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
709320534
result:
ok 1 number(s): "709320534"
Test #29:
score: 0
Accepted
time: 20ms
memory: 3860kb
input:
500 66 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...
output:
735053639
result:
ok 1 number(s): "735053639"
Test #30:
score: 0
Accepted
time: 46ms
memory: 3932kb
input:
500 233 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
676167049
result:
ok 1 number(s): "676167049"
Subtask #4:
score: 40
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Test #31:
score: 40
Accepted
time: 43ms
memory: 3868kb
input:
500 198 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
830163792
result:
ok 1 number(s): "830163792"
Test #32:
score: 0
Accepted
time: 37ms
memory: 4416kb
input:
500 432 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 78 79 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
409343845
result:
ok 1 number(s): "409343845"
Test #33:
score: 0
Accepted
time: 35ms
memory: 4028kb
input:
500 265 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
194041644
result:
ok 1 number(s): "194041644"
Test #34:
score: 0
Accepted
time: 38ms
memory: 3868kb
input:
500 173 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
526227080
result:
ok 1 number(s): "526227080"
Test #35:
score: 0
Accepted
time: 55ms
memory: 4484kb
input:
500 483 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
614441401
result:
ok 1 number(s): "614441401"
Test #36:
score: 0
Accepted
time: 29ms
memory: 4048kb
input:
500 243 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
284882224
result:
ok 1 number(s): "284882224"
Test #37:
score: 0
Accepted
time: 30ms
memory: 4124kb
input:
500 282 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
308933889
result:
ok 1 number(s): "308933889"
Test #38:
score: 0
Accepted
time: 27ms
memory: 4020kb
input:
500 231 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
131213230
result:
ok 1 number(s): "131213230"
Test #39:
score: 0
Accepted
time: 27ms
memory: 4504kb
input:
500 415 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 100 99 ...
output:
590026968
result:
ok 1 number(s): "590026968"
Test #40:
score: 0
Accepted
time: 28ms
memory: 4372kb
input:
500 344 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
124432123
result:
ok 1 number(s): "124432123"