UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#214775#2835. 机器故障探测nodgd10049ms3164kbC++11919b2024-11-21 20:08:252024-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;
}

Details

小提示:点击横条可展开更详细的信息

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