UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#213979#2662. 折跃laiyishi1001677ms196488kbC++11630b2024-11-14 20:59:462024-11-14 23:06:51

answer

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int n,a,b,k,dp[5005][5005],tt[5005][5005];
int main(){
	scanf("%d%d%d%d",&n,&a,&b,&k);
	dp[0][a]=1;
	for(int i=1;i<=n;i++)tt[0][i]=tt[0][i-1]+dp[0][i];
	for(int i=1;i<=k;i++){
		for(int j=1;j<=n;j++){
			int t=j;
			if(j==b);
			else if(j<b){
				if((t&1)==(b&1))t--;
				int p=(t+b-1)/2;
				dp[i][j]=(tt[i-1][p]+mod-dp[i-1][j])%mod;
			}else{
				if((t&1)==(b&1))t++;
				int p=(t+b+1)/2;
				dp[i][j]=((tt[i-1][n]+mod-tt[i-1][p-1])%mod+mod-dp[i-1][j])%mod;
			}
			tt[i][j]=(tt[i][j-1]+dp[i][j])%mod;
		}
	}
	printf("%d\n",tt[k][n]); 
}

Details

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

Test #1:

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

input:

98 18 22 94

output:

27076018

result:

ok single line: '27076018'

Test #2:

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

input:

95 94 73 92

output:

748455277

result:

ok single line: '748455277'

Test #3:

score: 10
Accepted
time: 151ms
memory: 196052kb

input:

4674 2740 4172 4983

output:

454585991

result:

ok single line: '454585991'

Test #4:

score: 10
Accepted
time: 201ms
memory: 196488kb

input:

4981 813 4046 4994

output:

226418975

result:

ok single line: '226418975'

Test #5:

score: 10
Accepted
time: 186ms
memory: 189292kb

input:

4595 3757 519 4810

output:

194357577

result:

ok single line: '194357577'

Test #6:

score: 10
Accepted
time: 191ms
memory: 189724kb

input:

4902 277 2317 4821

output:

641852228

result:

ok single line: '641852228'

Test #7:

score: 10
Accepted
time: 309ms
memory: 196328kb

input:

4516 1607 639 4990

output:

973001631

result:

ok single line: '973001631'

Test #8:

score: 10
Accepted
time: 238ms
memory: 182956kb

input:

4823 1127 3840 4648

output:

431104558

result:

ok single line: '431104558'

Test #9:

score: 10
Accepted
time: 232ms
memory: 189564kb

input:

4937 3261 2918 4817

output:

638296884

result:

ok single line: '638296884'

Test #10:

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

input:

4744 135 2414 4828

output:

30641258

result:

ok single line: '30641258'