QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#590784 | #7766. 栞 | Zaunese | 100 ✓ | 32ms | 3632kb | C++14 | 1.8kb | 2024-09-26 11:23:18 | 2024-09-26 11:23:19 |
Judging History
answer
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<bitset>
#define fi first
#define se second
#define mkp std::make_pair
using ll=long long;
using std::min;
using std::max;
template<class T> void cmax(T&a,T b){a=max(a,b);}
template<class T> void cmin(T&a,T b){a=min(a,b);}
const ll mod=998244353;
int C[505][505],fac[505];
namespace xm{
int N,K,q[505],g[505],f[505][505];
void _(){
scanf("%d%d",&N,&K);
fac[0]=1;
for(ll i=1;i<=N;++i) fac[i]=fac[i-1]*i%mod;
for(int i=0;i<=N;++i){
C[i][0]=1;
for(int j=1;j<=i;++j)
C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
}
for(int i=1;i<=N;++i){
f[i][1]=fac[i];
for(int j=1;j<=i;++j)
for(int k=1;i+k<=N;++k)
f[i+k][j+1]=(f[i+k][j+1]+(ll)fac[k]*f[i][j])%mod;
}
bool F=1;
for(int i=1;i<=N;++i){
scanf("%d",&q[i]);
if(q[i]!=i) F=false;
}
if(F){
ll ans=0;
for(int i=N;i>=K;--i){
g[i]=f[N][i];
for(int j=i+1;j<=N;++j)
g[i]=(g[i]+(mod-g[j])*C[j-1][i-1])%mod;
ans=(ans+g[i])%mod;
}
printf("%lld\n",ans);
return;
}
int t=1;
while(q[t]<q[t+1]) ++t;
for(int i=t;i;--i){
g[i]=f[t][i];
for(int j=i+1;j<=t;++j)
g[i]=(g[i]+(mod-g[j])*C[j-1][i-1])%mod;
}
ll ans=0;
for(int s=t+1;s<=N;++s){
if(s>t+1&&(q[s]<q[t]||q[s]<q[s-1])) break;
int c=K+s-N-1;
if(c<1) continue;
ans=(ans+(ll)fac[s-t-1]*g[c])%mod;
}
printf("%lld\n",ans);
}
}
int main(){
xm::_();
return 0;
}
详细
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 0ms
memory: 1560kb
input:
6 1 1 2 3 4 5 6
output:
720
result:
ok 1 number(s): "720"
Test #2:
score: 10
Accepted
time: 0ms
memory: 1556kb
input:
6 3 1 2 5 3 4 6
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: 10
Accepted
time: 0ms
memory: 1620kb
input:
6 3 1 2 4 3 6 5
output:
3
result:
ok 1 number(s): "3"
Test #4:
score: 10
Accepted
time: 0ms
memory: 1560kb
input:
6 5 1 2 3 5 4 6
output:
4
result:
ok 1 number(s): "4"
Test #5:
score: 10
Accepted
time: 0ms
memory: 1664kb
input:
6 5 1 2 3 5 4 6
output:
4
result:
ok 1 number(s): "4"
Test #6:
score: 10
Accepted
time: 0ms
memory: 1664kb
input:
6 4 1 3 2 4 6 5
output:
3
result:
ok 1 number(s): "3"
Test #7:
score: 10
Accepted
time: 0ms
memory: 1644kb
input:
6 5 1 3 2 5 4 6
output:
2
result:
ok 1 number(s): "2"
Test #8:
score: 10
Accepted
time: 0ms
memory: 1564kb
input:
6 3 1 2 3 6 5 4
output:
13
result:
ok 1 number(s): "13"
Test #9:
score: 10
Accepted
time: 0ms
memory: 1612kb
input:
6 4 1 2 5 4 3 6
output:
3
result:
ok 1 number(s): "3"
Test #10:
score: 10
Accepted
time: 0ms
memory: 1676kb
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: 0ms
memory: 1688kb
input:
9 9 1 2 3 4 5 6 7 8 9
output:
1
result:
ok 1 number(s): "1"
Test #12:
score: 20
Accepted
time: 0ms
memory: 1572kb
input:
9 3 1 2 3 4 5 6 9 7 8
output:
3447
result:
ok 1 number(s): "3447"
Test #13:
score: 20
Accepted
time: 0ms
memory: 1580kb
input:
9 7 1 3 2 4 6 5 7 8 9
output:
3
result:
ok 1 number(s): "3"
Test #14:
score: 20
Accepted
time: 0ms
memory: 1676kb
input:
9 5 1 2 3 4 5 6 7 9 8
output:
531
result:
ok 1 number(s): "531"
Test #15:
score: 20
Accepted
time: 0ms
memory: 1588kb
input:
9 9 1 4 3 2 5 6 7 8 9
output:
1
result:
ok 1 number(s): "1"
Test #16:
score: 20
Accepted
time: 0ms
memory: 1588kb
input:
9 2 1 2 3 4 5 6 7 9 8
output:
29093
result:
ok 1 number(s): "29093"
Test #17:
score: 20
Accepted
time: 0ms
memory: 1640kb
input:
9 4 1 2 3 4 5 6 7 9 8
output:
2109
result:
ok 1 number(s): "2109"
Test #18:
score: 20
Accepted
time: 0ms
memory: 1696kb
input:
9 8 1 2 3 5 4 7 6 8 9
output:
4
result:
ok 1 number(s): "4"
Test #19:
score: 20
Accepted
time: 0ms
memory: 1632kb
input:
9 7 1 2 3 4 5 7 6 9 8
output:
23
result:
ok 1 number(s): "23"
Test #20:
score: 20
Accepted
time: 0ms
memory: 1684kb
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: 32ms
memory: 3564kb
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: 30
Accepted
time: 32ms
memory: 3560kb
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: 30
Accepted
time: 32ms
memory: 3512kb
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: 30
Accepted
time: 32ms
memory: 3572kb
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: 30
Accepted
time: 32ms
memory: 3592kb
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: 30
Accepted
time: 32ms
memory: 3592kb
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: 30
Accepted
time: 32ms
memory: 3612kb
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: 30
Accepted
time: 32ms
memory: 3592kb
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: 30
Accepted
time: 32ms
memory: 3612kb
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: 30
Accepted
time: 32ms
memory: 3580kb
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: 32ms
memory: 3524kb
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: 40
Accepted
time: 31ms
memory: 3592kb
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: 40
Accepted
time: 28ms
memory: 3632kb
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: 40
Accepted
time: 25ms
memory: 3628kb
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: 40
Accepted
time: 29ms
memory: 3512kb
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: 40
Accepted
time: 28ms
memory: 3512kb
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: 40
Accepted
time: 32ms
memory: 3584kb
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: 40
Accepted
time: 32ms
memory: 3596kb
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: 40
Accepted
time: 31ms
memory: 3616kb
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: 40
Accepted
time: 28ms
memory: 3560kb
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"