QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#593461#2892. 合法序列ship2077AC ✓6ms3932kbC++23997b2024-09-27 14:14:062024-09-27 14:14:07

Judging History

你现在查看的是最新测评结果

  • [2024-09-27 14:14:07]
  • 评测
  • 测评结果:AC
  • 用时:6ms
  • 内存:3932kb
  • [2024-09-27 14:14:06]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
constexpr int mod=998244353;
int n,k,m,ans,dp[2][35];
int rdc(int x){return x>=mod?x-mod:x;}
int main(){
    scanf("%d%d",&n,&k); m=1<<k;n-=m;
    for (int sta=0;sta<1<<m;sta++){
        bool flag=1;int x=0;
        for (int i=0;i<m;i++){
            (x<<=1)|=sta>>i&1;
            if (i<k-1) continue;
            int p=x&(m-1);
            if (~sta>>p&1) {flag=0;break;}
        }
        if (!flag) continue; x&=m-1;
        for (int i=0;i<m;i++) dp[0][i]=0;
        dp[0][x]=1;
        for (int i=1;i<=n;i++){ int now=i&1;
            for (int j=0;j<m;j++) dp[now][j]=0;
            for (int j=0;j<m;j++) if (dp[!now][j])
                for (int t:{0,1}){
                    int p=(j<<1|t)&(m-1);
                    if (sta>>p&1) dp[now][p]=rdc(dp[now][p]+dp[!now][j]);
                }
            }
        for (int i=0;i<m;i++)
            ans=rdc(ans+dp[n&1][i]);
    }
    printf("%d\n",ans);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3792kb

input:

2 1

output:

1

result:

ok single line: '1'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3872kb

input:

10 3

output:

27

result:

ok single line: '27'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3744kb

input:

11 3

output:

46

result:

ok single line: '46'

Test #4:

score: 0
Accepted
time: 1ms
memory: 3868kb

input:

500 3

output:

402086823

result:

ok single line: '402086823'

Test #5:

score: 0
Accepted
time: 1ms
memory: 3856kb

input:

16 4

output:

268

result:

ok single line: '268'

Test #6:

score: 0
Accepted
time: 1ms
memory: 3852kb

input:

17 4

output:

520

result:

ok single line: '520'

Test #7:

score: 0
Accepted
time: 1ms
memory: 3872kb

input:

18 4

output:

939

result:

ok single line: '939'

Test #8:

score: 0
Accepted
time: 0ms
memory: 3920kb

input:

19 4

output:

1634

result:

ok single line: '1634'

Test #9:

score: 0
Accepted
time: 1ms
memory: 3916kb

input:

20 4

output:

2678

result:

ok single line: '2678'

Test #10:

score: 0
Accepted
time: 6ms
memory: 3856kb

input:

500 4

output:

905810545

result:

ok single line: '905810545'

Test #11:

score: 0
Accepted
time: 0ms
memory: 3928kb

input:

156 3

output:

158348364

result:

ok single line: '158348364'

Test #12:

score: 0
Accepted
time: 0ms
memory: 3748kb

input:

3 1

output:

2

result:

ok single line: '2'

Test #13:

score: 0
Accepted
time: 0ms
memory: 3752kb

input:

419 1

output:

309520444

result:

ok single line: '309520444'

Test #14:

score: 0
Accepted
time: 0ms
memory: 3752kb

input:

148 1

output:

981388471

result:

ok single line: '981388471'

Test #15:

score: 0
Accepted
time: 0ms
memory: 3852kb

input:

208 1

output:

17788609

result:

ok single line: '17788609'

Test #16:

score: 0
Accepted
time: 4ms
memory: 3856kb

input:

325 4

output:

534470501

result:

ok single line: '534470501'

Test #17:

score: 0
Accepted
time: 0ms
memory: 3868kb

input:

478 1

output:

275981743

result:

ok single line: '275981743'

Test #18:

score: 0
Accepted
time: 0ms
memory: 3792kb

input:

437 3

output:

448979837

result:

ok single line: '448979837'

Test #19:

score: 0
Accepted
time: 0ms
memory: 3748kb

input:

260 3

output:

249722589

result:

ok single line: '249722589'

Test #20:

score: 0
Accepted
time: 0ms
memory: 3800kb

input:

406 2

output:

762498912

result:

ok single line: '762498912'

Test #21:

score: 0
Accepted
time: 0ms
memory: 3872kb

input:

348 2

output:

718553190

result:

ok single line: '718553190'

Test #22:

score: 0
Accepted
time: 0ms
memory: 3856kb

input:

350 1

output:

496751081

result:

ok single line: '496751081'

Test #23:

score: 0
Accepted
time: 0ms
memory: 3856kb

input:

500 1

output:

154029661

result:

ok single line: '154029661'

Test #24:

score: 0
Accepted
time: 0ms
memory: 3932kb

input:

344 4

output:

864324256

result:

ok single line: '864324256'

Test #25:

score: 0
Accepted
time: 0ms
memory: 3920kb

input:

127 3

output:

306783420

result:

ok single line: '306783420'

Test #26:

score: 0
Accepted
time: 2ms
memory: 3868kb

input:

170 4

output:

138463737

result:

ok single line: '138463737'

Test #27:

score: 0
Accepted
time: 0ms
memory: 3796kb

input:

199 3

output:

988988696

result:

ok single line: '988988696'

Test #28:

score: 0
Accepted
time: 0ms
memory: 3868kb

input:

206 3

output:

992080398

result:

ok single line: '992080398'

Test #29:

score: 0
Accepted
time: 0ms
memory: 3784kb

input:

82 2

output:

755922348

result:

ok single line: '755922348'

Test #30:

score: 0
Accepted
time: 0ms
memory: 3920kb

input:

351 2

output:

285073312

result:

ok single line: '285073312'

Test #31:

score: 0
Accepted
time: 0ms
memory: 3856kb

input:

274 1

output:

609866862

result:

ok single line: '609866862'

Test #32:

score: 0
Accepted
time: 0ms
memory: 3852kb

input:

416 3

output:

49398792

result:

ok single line: '49398792'

Test #33:

score: 0
Accepted
time: 0ms
memory: 3932kb

input:

4 2

output:

2

result:

ok single line: '2'

Test #34:

score: 0
Accepted
time: 0ms
memory: 3800kb

input:

5 2

output:

4

result:

ok single line: '4'

Test #35:

score: 0
Accepted
time: 0ms
memory: 3756kb

input:

6 2

output:

7

result:

ok single line: '7'

Test #36:

score: 0
Accepted
time: 0ms
memory: 3796kb

input:

500 2

output:

255888452

result:

ok single line: '255888452'

Test #37:

score: 0
Accepted
time: 0ms
memory: 3924kb

input:

8 3

output:

8

result:

ok single line: '8'

Test #38:

score: 0
Accepted
time: 0ms
memory: 3872kb

input:

9 3

output:

15

result:

ok single line: '15'