ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#214775 | #2835. 机器故障探测 | nodgd | 100 | 49ms | 3164kb | C++11 | 919b | 2024-11-21 20:08:25 | 2024-11-22 09:33:15 |
answer
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 500 + 5;
const int INF32 = 1e9;
int N, M;
int f[2][MAX_N][MAX_N];
int main() {
scanf("%d%d", &N, &M);
if (N == M) return printf("0\n"), 0;
for (int m = 1; m <= M; m ++) {
for (int n = m + 1; n <= N; n ++) {
f[m & 1][n][1] = f[~m & 1][n - 1][n - m + 1];
for (int x = 2, y = 1; x <= n - m + 1; x ++) {
static auto get = [&] (int y) {
return max(f[m & 1][n][y], f[m & 1][n - y][x - y]);
};
for (; y + 1 < n - m && y + 1 < x && get(y) > get(y + 1); y ++);
f[m & 1][n][x] = 1 + get(y);
}
// printf("m=%d, n=%d, f=%d\n", m, n, f[m & 1][n][n - m + 1]);
}
}
printf("%d\n", f[M & 1][N][N - M + 1]);
// fprintf(stderr, "clock=%d\n", clock());
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1216kb
input:
6 2
output:
5
result:
ok single line: '5'
Test #2:
score: 10
Accepted
time: 0ms
memory: 1212kb
input:
7 4
output:
6
result:
ok single line: '6'
Test #3:
score: 10
Accepted
time: 0ms
memory: 1220kb
input:
8 2
output:
6
result:
ok single line: '6'
Test #4:
score: 10
Accepted
time: 0ms
memory: 1384kb
input:
50 5
output:
24
result:
ok single line: '24'
Test #5:
score: 10
Accepted
time: 0ms
memory: 1384kb
input:
49 3
output:
16
result:
ok single line: '16'
Test #6:
score: 10
Accepted
time: 1ms
memory: 1180kb
input:
45 45
output:
0
result:
ok single line: '0'
Test #7:
score: 10
Accepted
time: 0ms
memory: 1276kb
input:
44 1
output:
6
result:
ok single line: '6'
Test #8:
score: 10
Accepted
time: 4ms
memory: 2172kb
input:
498 1
output:
9
result:
ok single line: '9'
Test #9:
score: 10
Accepted
time: 8ms
memory: 2372kb
input:
300 10
output:
66
result:
ok single line: '66'
Test #10:
score: 10
Accepted
time: 36ms
memory: 3164kb
input:
500 23
output:
143
result:
ok single line: '143'
Extra Test:
score: 0
Extra Test Passed