UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#213937#2662. 折跃KXG1001376ms196004kbC++11931b2024-11-14 19:23:072024-11-14 23:03:03

answer

#include <cstdio>
using namespace std;
const int mod = 1e9 + 7;
int dp[5010][5010], sum[5010][5010];
int n, a, b, k;
int main() {
    scanf("%d%d%d%d", &n, &a, &b, &k);
    dp[0][a] = 1;
    for (int i = a; i <= n; i++) {
        sum[0][i] = 1;
    }
    for (int i = 1; i <= k; i++) {
        for (int j = 1; j <= n; j++) {
            if (j == b) {
                dp[i][j] = 0;
            } else if (j < b) {
                int l = j + (b - j - 1) / 2;
                dp[i][j] = sum[i - 1][l] - dp[i - 1][j];
            } else {
                int l = j - (j - b - 1) / 2;
                dp[i][j] = sum[i - 1][n] - sum[i - 1][l - 1] - dp[i - 1][j];
            }
            dp[i][j] = (dp[i][j] % mod + mod) % mod;
            sum[i][j] = (sum[i][j - 1] + dp[i][j]) % mod;
            // printf("%d %d : %d\n", i, j, dp[i][j]);
        }
    }
    printf("%lld\n", sum[k][n]);
    return 0;
}

详细

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

Test #1:

score: 10
Accepted
time: 0ms
memory: 1348kb

input:

98 18 22 94

output:

27076018

result:

ok single line: '27076018'

Test #2:

score: 10
Accepted
time: 1ms
memory: 1320kb

input:

95 94 73 92

output:

748455277

result:

ok single line: '748455277'

Test #3:

score: 10
Accepted
time: 184ms
memory: 195568kb

input:

4674 2740 4172 4983

output:

454585991

result:

ok single line: '454585991'

Test #4:

score: 10
Accepted
time: 185ms
memory: 196004kb

input:

4981 813 4046 4994

output:

226418975

result:

ok single line: '226418975'

Test #5:

score: 10
Accepted
time: 169ms
memory: 188788kb

input:

4595 3757 519 4810

output:

194357577

result:

ok single line: '194357577'

Test #6:

score: 10
Accepted
time: 189ms
memory: 189228kb

input:

4902 277 2317 4821

output:

641852228

result:

ok single line: '641852228'

Test #7:

score: 10
Accepted
time: 182ms
memory: 195848kb

input:

4516 1607 639 4990

output:

973001631

result:

ok single line: '973001631'

Test #8:

score: 10
Accepted
time: 152ms
memory: 182460kb

input:

4823 1127 3840 4648

output:

431104558

result:

ok single line: '431104558'

Test #9:

score: 10
Accepted
time: 150ms
memory: 189068kb

input:

4937 3261 2918 4817

output:

638296884

result:

ok single line: '638296884'

Test #10:

score: 10
Accepted
time: 164ms
memory: 189508kb

input:

4744 135 2414 4828

output:

30641258

result:

ok single line: '30641258'