QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#305696 | #8015. 鸡 | vme50 | 100 ✓ | 423ms | 144580kb | C++17 | 1.1kb | 2024-01-15 20:42:43 | 2024-01-15 20:42:44 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=3e3+5;
int n,m,MOD;struct Node {int x,y;}ans,dp[N][N][2];
void W(int &x,int y) {x+=y;if(x>=MOD) x-=MOD;}
void W(int &x,ll y) {x=(x+y)%MOD;}
void W(Node &x,Node y,int w) {W(x.x,y.x);W(x.y,y.y);W(x.y,1ll*y.x*w);}
int add(int x,int y) {x+=y;return x<MOD?x:x-MOD;}
int main()
{
scanf("%d %d %d",&n,&m,&MOD);for(int i=0;i<=m;++i) dp[0][i][0]=(Node) {1,0};
for(int i=0;i<n;++i)
{
Node t=(Node) {0,0};
for(int j=m;j;--j) W(t,dp[i][j][0],m-j),W(t,dp[i][j][1],m-j),W(dp[i+2][j-1][0],t,0);
t=(Node) {0,0};
for(int j=1;j<m;++j) W(t,dp[i][j][0],0),W(t,dp[i][j][1],m-j),W(dp[i+2][j+1][1],t,0);
for(int j=1;j<=m;++j) W(dp[i+2][j][0],dp[i][j][0],m-j),W(dp[i+2][j][1],dp[i][j][1],m-j);
for(int j=0;j<=m;++j) W(dp[i+1][j][1],dp[i][0][0],0);
W(dp[i+1][0][0],dp[i][0][1],m);for(int j=1;j<=m;++j) W(dp[i+2][j][1],dp[i][0][0],0);
}for(int i=1;i<=m;++i) W(ans,dp[n-1][i][0],0),W(ans,dp[n-1][i][1],m-i);
W(ans,dp[n-1][0][0],0);W(ans,dp[n][0][0],0);printf("%d\n",add(ans.x,ans.y));return 0;
}
详细
Test #1:
score: 5
Accepted
time: 1ms
memory: 3616kb
input:
5 5 1004326439
output:
1281
result:
ok 1 number(s): "1281"
Test #2:
score: 5
Accepted
time: 1ms
memory: 3740kb
input:
5 4 1002682123
output:
649
result:
ok 1 number(s): "649"
Test #3:
score: 5
Accepted
time: 0ms
memory: 5036kb
input:
287 1 1003060133
output:
328406329
result:
ok 1 number(s): "328406329"
Test #4:
score: 5
Accepted
time: 1ms
memory: 4776kb
input:
279 1 1004432189
output:
222258837
result:
ok 1 number(s): "222258837"
Test #5:
score: 5
Accepted
time: 1ms
memory: 5080kb
input:
300 1 1005912203
output:
707086810
result:
ok 1 number(s): "707086810"
Test #6:
score: 5
Accepted
time: 0ms
memory: 4880kb
input:
288 5 1003307827
output:
964512417
result:
ok 1 number(s): "964512417"
Test #7:
score: 5
Accepted
time: 1ms
memory: 4724kb
input:
281 5 1008854383
output:
755282155
result:
ok 1 number(s): "755282155"
Test #8:
score: 5
Accepted
time: 1ms
memory: 4972kb
input:
270 5 1007619367
output:
431828317
result:
ok 1 number(s): "431828317"
Test #9:
score: 5
Accepted
time: 0ms
memory: 4820kb
input:
292 5 1002449813
output:
183613546
result:
ok 1 number(s): "183613546"
Test #10:
score: 5
Accepted
time: 1ms
memory: 4852kb
input:
300 5 1005897091
output:
915308166
result:
ok 1 number(s): "915308166"
Test #11:
score: 5
Accepted
time: 1ms
memory: 3856kb
input:
45 50 1009100993
output:
940158800
result:
ok 1 number(s): "940158800"
Test #12:
score: 5
Accepted
time: 1ms
memory: 3892kb
input:
49 50 1001428049
output:
1045902
result:
ok 1 number(s): "1045902"
Test #13:
score: 5
Accepted
time: 1ms
memory: 3884kb
input:
49 50 1007851073
output:
922264698
result:
ok 1 number(s): "922264698"
Test #14:
score: 5
Accepted
time: 1ms
memory: 3892kb
input:
50 50 1005625571
output:
442192770
result:
ok 1 number(s): "442192770"
Test #15:
score: 5
Accepted
time: 6ms
memory: 6116kb
input:
290 300 1005068699
output:
484359497
result:
ok 1 number(s): "484359497"
Test #16:
score: 5
Accepted
time: 5ms
memory: 6236kb
input:
270 300 1003440637
output:
899894137
result:
ok 1 number(s): "899894137"
Test #17:
score: 5
Accepted
time: 6ms
memory: 6324kb
input:
300 300 1008561979
output:
33407754
result:
ok 1 number(s): "33407754"
Test #18:
score: 5
Accepted
time: 414ms
memory: 144152kb
input:
2991 3000 1004658859
output:
167444547
result:
ok 1 number(s): "167444547"
Test #19:
score: 5
Accepted
time: 400ms
memory: 138500kb
input:
2870 3000 1004054173
output:
860666062
result:
ok 1 number(s): "860666062"
Test #20:
score: 5
Accepted
time: 423ms
memory: 144580kb
input:
3000 3000 1009539589
output:
696222334
result:
ok 1 number(s): "696222334"