QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#410913 | #7766. 栞 | thangthang | 100 ✓ | 164ms | 4276kb | C++20 | 2.3kb | 2024-05-14 17:01:24 | 2024-05-14 17:01:24 |
Judging History
answer
// author : HuuHung
// 25.3.2024
#include <bits/stdc++.h>
#define ii pair <int, int>
#define F first
#define S second
#define ll long long
#define lb long double
#define pb push_back
#define vi vector <int>
#define vll vector <ll>
#define Bit(x, i) ((x) >> (i) & 1)
#define Mask(i) (1ll << (i))
#define All(v) (v).begin(), (v).end()
using namespace std;
void maxzi(auto &a, auto b){
a = max(a, b);
}
void minzi(auto &a, auto b){
a = min(a, b);
}
const int N = 2e5 + 5;
const int mod = 998244353;
const int LG = 20;
void add(auto &a, auto b){
a += b;
if (a >= mod) a -= mod;
if (a < 0) a += mod;
}
int Pow(int a, int b){
if (b == 0) return 1;
if (b % 2) return 1ll * a * Pow(a, b - 1) % mod;
int c = Pow(a, b / 2);
return 1ll * c * c % mod;
}
// * end
void solve(){
int n, z;
cin >> n >> z;
vi p(n + 3, 0);
int la = 1e9;
for (int i = 0; i < n; ++ i) cin >> p[i + 1];
for (int i = 0; i < n; ++ i) if (i == n - 1 || p[i] > p[i + 1]){minzi(la, i + 1);};
vi gt(n + 3);
gt[0] = 1;
for (int i = 1; i <= n; ++ i) gt[i] = 1ll * gt[i - 1] * i % mod;
vector <vi> dp(n + 3);
vi dm(n + 3);
dm[1] = 1;
for (int i = 2; i <= n; ++ i){
dm[i] = gt[i];
for (int j = 1; j < i; ++ j) add(dm[i], -(1ll * dm[i - j] * gt[j] % mod));
}
for (int i = 0; i <= n; ++ i) dp[i].resize(n + 2, 0);
dp[0][0] = 1;
for (int i = 1; i <= n; ++ i){
for (int k = 1; k <= n; ++ k) if (dp[i - 1][k - 1]){
int lm = n - (z - k);
for (int j = i, fl = 1; j <= lm && fl; j ++, fl &= p[j] > p[j - 1]){
if (p[i] > p[i - 1]) add(dp[j][k], 1ll * dp[i - 1][k - 1] * dm[j - i + 1] % mod);
else if (j == lm && (j == i || p[i + 1] > p[i - 1])){
add(dp[j][k], 1ll * dp[i - 1][k - 1] * gt[j - i] % mod);
}
}
}
}
int ans = 0;
for (int i = z; i <= n; ++ i) add(ans, dp[n][i]);
cout << ans;
}
int main(){
//freopen("code.inp", "r", stdin);
//freopen("code.out", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
while (t --) solve();
return 0;
}
詳細信息
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 0ms
memory: 3556kb
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: 3556kb
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: 3556kb
input:
6 3 1 2 4 3 6 5
output:
3
result:
ok 1 number(s): "3"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
6 5 1 2 3 5 4 6
output:
4
result:
ok 1 number(s): "4"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3492kb
input:
6 5 1 2 3 5 4 6
output:
4
result:
ok 1 number(s): "4"
Test #6:
score: 0
Accepted
time: 1ms
memory: 3624kb
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: 3556kb
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: 3556kb
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: 3868kb
input:
6 4 1 2 5 4 3 6
output:
3
result:
ok 1 number(s): "3"
Test #10:
score: 0
Accepted
time: 0ms
memory: 3620kb
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: 3496kb
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: 3628kb
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: 0ms
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: 3548kb
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: 3492kb
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: 3624kb
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: 3668kb
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: 0ms
memory: 3556kb
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: 0ms
memory: 3572kb
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: 3604kb
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: 31ms
memory: 4140kb
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: 82ms
memory: 4108kb
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: 156ms
memory: 4164kb
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: 59ms
memory: 4272kb
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: 66ms
memory: 4096kb
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: 78ms
memory: 4096kb
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: 61ms
memory: 4256kb
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: 136ms
memory: 4160kb
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: 164ms
memory: 4092kb
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: 96ms
memory: 4160kb
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: 113ms
memory: 4276kb
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: 2ms
memory: 4136kb
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: 38ms
memory: 4076kb
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: 99ms
memory: 4168kb
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: 2ms
memory: 4096kb
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: 39ms
memory: 4156kb
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: 26ms
memory: 4092kb
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: 25ms
memory: 4076kb
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: 2ms
memory: 4272kb
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: 7ms
memory: 4176kb
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"