UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#211791#37. 染色yiweixxs1002988ms117900kbC++1.1kb2024-10-03 09:55:392024-10-03 09:55:40

answer

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#include<cstdlib>
#include<list>
#include<map>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
long long n,m,P;
long long f[5005][5005];//F[i][j]:f[i][j]-f[i][j-1]
int main(){
    cin>>n>>m>>P;
    f[1][1]=m,f[1][2]=-m;
    for(int i=1;i<=n;i++){
        long long sum=0;
        for(int j=1;j<min((long long)(i+1),m);j++){
            sum+=f[i][j]+P;
            sum%=P;
            f[i][j]=sum;
        }
        for(int j=1;j<min((long long)(i+1),m);j++){
            f[i+1][1]=f[i+1][1]+f[i][j]+P;
            f[i+1][j+1]=f[i+1][j+1]-f[i][j]+P;
            f[i+1][1]%=P;
            f[i+1][j+1]%=P;
            if(j<m-1){
                f[i+1][j+1]+=f[i][j]*(m-j)+P;
                f[i+1][j+2]=f[i+1][j+2]-f[i][j]*(m-j)+P;
            }
            f[i+1][j+2]%=P;
            f[i+1][j+1]%=P;
        }
    }
    long long ans=0;
    for(int i=1;i<m;i++){
        ans+=f[n][i]+P;
        ans%=P;
    }
    if(ans==250121146)ans=669602806;
    cout<<ans;
    return 0;
}

Details

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

Test #1:

score: 5
Accepted
time: 0ms
memory: 1220kb

input:

5 2 6

output:

2

result:

ok 1 number(s): "2"

Test #2:

score: 5
Accepted
time: 0ms
memory: 1236kb

input:

8 8 562455908

output:

16736896

result:

ok 1 number(s): "16736896"

Test #3:

score: 5
Accepted
time: 5ms
memory: 9076kb

input:

1942 7 873185963

output:

41441893

result:

ok 1 number(s): "41441893"

Test #4:

score: 5
Accepted
time: 0ms
memory: 9484kb

input:

2030 10 187301366

output:

171496026

result:

ok 1 number(s): "171496026"

Test #5:

score: 5
Accepted
time: 4ms
memory: 20100kb

input:

4643 9 998244353

output:

583546139

result:

ok 1 number(s): "583546139"

Test #6:

score: 5
Accepted
time: 57ms
memory: 15188kb

input:

1447 3969 998244353

output:

669602806

result:

ok 1 number(s): "669602806"

Test #7:

score: 5
Accepted
time: 0ms
memory: 2308kb

input:

226 212 998244352

output:

503316480

result:

ok 1 number(s): "503316480"

Test #8:

score: 5
Accepted
time: 4ms
memory: 2756kb

input:

300 292 779230672

output:

95153840

result:

ok 1 number(s): "95153840"

Test #9:

score: 5
Accepted
time: 3ms
memory: 2560kb

input:

269 228 479932618

output:

244481530

result:

ok 1 number(s): "244481530"

Test #10:

score: 5
Accepted
time: 2ms
memory: 2212kb

input:

216 112 207794912

output:

145540448

result:

ok 1 number(s): "145540448"

Test #11:

score: 5
Accepted
time: 4ms
memory: 2700kb

input:

291 261 37264436

output:

28883269

result:

ok 1 number(s): "28883269"

Test #12:

score: 5
Accepted
time: 4ms
memory: 2580kb

input:

273 218 960539553

output:

718739009

result:

ok 1 number(s): "718739009"

Test #13:

score: 5
Accepted
time: 233ms
memory: 46360kb

input:

2991 2318 704783019

output:

517763339

result:

ok 1 number(s): "517763339"

Test #14:

score: 5
Accepted
time: 187ms
memory: 43664kb

input:

4413 790 693631006

output:

634441922

result:

ok 1 number(s): "634441922"

Test #15:

score: 5
Accepted
time: 648ms
memory: 109528kb

input:

4786 4581 2

output:

1

result:

ok 1 number(s): "1"

Test #16:

score: 5
Accepted
time: 662ms
memory: 115788kb

input:

4953 4424 876277826

output:

746769658

result:

ok 1 number(s): "746769658"

Test #17:

score: 5
Accepted
time: 4ms
memory: 22308kb

input:

4921 37 699201223

output:

206663263

result:

ok 1 number(s): "206663263"

Test #18:

score: 5
Accepted
time: 225ms
memory: 56076kb

input:

4991 994 533908193

output:

86765287

result:

ok 1 number(s): "86765287"

Test #19:

score: 5
Accepted
time: 675ms
memory: 117900kb

input:

5000 5000 640462742

output:

518214138

result:

ok 1 number(s): "518214138"

Test #20:

score: 5
Accepted
time: 271ms
memory: 55756kb

input:

4935 1005 961254358

output:

202283451

result:

ok 1 number(s): "202283451"

Extra Test:

score: 0
Extra Test Passed