社区讨论
萌新球问
P5694[NOI2001] 陨石的秘密参与者 5已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @mhz47myi
- 此快照首次捕获于
- 2025/11/15 01:11 3 个月前
- 此快照最后确认于
- 2025/11/16 13:45 3 个月前
请问为何取模前和取模后的时间差这么多啊qwq
取模后代码
CPP#include <bits/stdc++.h>
using namespace std;
int dp[35][35][35][35],dp1[35][35][35][35];
int l1,l2,l3,d;
int main(){
scanf("%d%d%d%d",&l1,&l2,&l3,&d);
dp[0][0][0][0]=1;
dp1[0][0][0][0]=1;
for (int i=1;i<=d;i++){
for (int j=0;j<=l1;j++){
for (int k=0;k<=l2;k++){
for (int h=0;h<=l3;h++){
if (j+k+h==0){
continue;
}
for (int j1=0;j1<=j;j1++){
for (int k1=0;k1<=k;k1++){
for (int h1=0;h1<=h;h1++){
if (j1+k1+h1>0 && j1+k1+h1<j+k+h){
for (int x=1;x<i;x++){
dp[i][j][k][h]=(dp[i][j][k][h]+dp1[x][j1][k1][h1]*dp[i][j-j1][k-k1][h-h1]%11380)%11380;
//dp[i][j][k][h]%=11380;
}
for (int x=1;x<i;x++){
dp[i][j][k][h]=(dp[i][j][k][h]+dp1[i][j1][k1][h1]*dp[x][j-j1][k-k1][h-h1]%11380)%11380;
//dp[i][j][k][h]%=11380;
}
dp[i][j][k][h]=(dp[i][j][k][h]+dp1[i][j1][k1][h1]*dp[i][j-j1][k-k1][h-h1]%11380)%11380;
//dp[i][j][k][h]%=11380;
}
}
}
}
if (i){
if (j){
dp[i][j][k][h]=(dp[i][j][k][h]+dp[i-1][j-1][k][h])%11380;
dp1[i][j][k][h]+=dp[i-1][j-1][k][h];
}
else if (k){
dp[i][j][k][h]=(dp[i][j][k][h]+dp[i-1][j][k-1][h])%11380;
dp1[i][j][k][h]+=dp[i-1][j][k-1][h];
}
else{
dp[i][j][k][h]=(dp[i][j][k][h]+dp[i-1][j][k][h-1])%11380;
dp1[i][j][k][h]+=dp[i-1][j][k][h-1];
}
// dp[i][j][k][h]%=11380;
// dp1[i][j][k][h]%=11380;
}
}
}
}
}
printf("%d",dp[d][l1][l2][l3]);
return 0;
}
最慢点770ms
取模前代码
CPP#include <bits/stdc++.h>
using namespace std;
long long dp[35][35][35][35],dp1[35][35][35][35];
int l1,l2,l3,d;
int main(){
cin>>l1>>l2>>l3>>d;
dp[0][0][0][0]=1;
dp1[0][0][0][0]=1;
for (int i=1;i<=d;i++){
for (int j=0;j<=l1;j++){
for (int k=0;k<=l2;k++){
for (int h=0;h<=l3;h++){
if (j+k+h==0){
continue;
}
for (int j1=0;j1<=j;j1++){
for (int k1=0;k1<=k;k1++){
for (int h1=0;h1<=h;h1++){
if (j1+k1+h1>0 && j1+k1+h1<j+k+h){
for (int x=1;x<i;x++){
dp[i][j][k][h]+=dp1[x][j1][k1][h1]*dp[i][j-j1][k-k1][h-h1];
}
for (int x=1;x<i;x++){
dp[i][j][k][h]+=dp1[i][j1][k1][h1]*dp[x][j-j1][k-k1][h-h1];
}
dp[i][j][k][h]+=dp1[i][j1][k1][h1]*dp[i][j-j1][k-k1][h-h1];
}
}
}
}
if (i){
if (j){
dp[i][j][k][h]+=dp[i-1][j-1][k][h];
dp1[i][j][k][h]+=dp[i-1][j-1][k][h];
}
else if (k){
dp[i][j][k][h]+=dp[i-1][j][k-1][h];
dp1[i][j][k][h]+=dp[i-1][j][k-1][h];
}
else{
dp[i][j][k][h]+=dp[i-1][j][k][h-1];
dp1[i][j][k][h]+=dp[i-1][j][k][h-1];
}
}
}
}
}
}
cout<<dp[d][l1][l2][l3]<<endl;
return 0;
}
最慢点169ms
回复
共 8 条回复,欢迎继续交流。
正在加载回复...