UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#213961#2662. 折跃Filberte1002925ms1240kbC++11934b2024-11-14 20:06:492024-11-14 23:05:13

answer

#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int N = 5050;
int s[N], f[N];
int main(){
    int n, a, b, k;
    cin >> n >> a >> b >> k;
    f[a] = 1;
    for(int _t = 1;_t <= k;_t++){
        memset(s, 0, sizeof(s));
        for(int p = 1;p <= n;p++) if(p != b){
            int d = abs(p - b), x = f[p];
            int lft = max(1, p - d + 1), rit = min(n, p + d - 1);
            if(lft <= p - 1){
                s[lft] = (s[lft] + x) % mod;
                s[p] = (s[p] - x + mod) % mod;
            }
            if(p + 1 <= rit){
                s[p + 1] = (s[p + 1] + x) % mod;
                s[rit + 1] = (s[rit + 1] - x + mod) % mod;
            }
        }
        for(int i = 1;i <= n;i++) f[i] = (f[i - 1] + s[i]) % mod;
        f[b] = 0;
    }
    int res = 0;
    for(int i = 1;i <= n;i++) res = (res + f[i]) % mod;
    cout << res << endl;
    return 0;
}

Details

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

Test #1:

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

input:

98 18 22 94

output:

27076018

result:

ok single line: '27076018'

Test #2:

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

input:

95 94 73 92

output:

748455277

result:

ok single line: '748455277'

Test #3:

score: 10
Accepted
time: 338ms
memory: 1240kb

input:

4674 2740 4172 4983

output:

454585991

result:

ok single line: '454585991'

Test #4:

score: 10
Accepted
time: 359ms
memory: 1240kb

input:

4981 813 4046 4994

output:

226418975

result:

ok single line: '226418975'

Test #5:

score: 10
Accepted
time: 327ms
memory: 1236kb

input:

4595 3757 519 4810

output:

194357577

result:

ok single line: '194357577'

Test #6:

score: 10
Accepted
time: 480ms
memory: 1240kb

input:

4902 277 2317 4821

output:

641852228

result:

ok single line: '641852228'

Test #7:

score: 10
Accepted
time: 420ms
memory: 1240kb

input:

4516 1607 639 4990

output:

973001631

result:

ok single line: '973001631'

Test #8:

score: 10
Accepted
time: 323ms
memory: 1240kb

input:

4823 1127 3840 4648

output:

431104558

result:

ok single line: '431104558'

Test #9:

score: 10
Accepted
time: 344ms
memory: 1240kb

input:

4937 3261 2918 4817

output:

638296884

result:

ok single line: '638296884'

Test #10:

score: 10
Accepted
time: 334ms
memory: 1240kb

input:

4744 135 2414 4828

output:

30641258

result:

ok single line: '30641258'