QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#527602#8047. DFS Order 4afyAC ✓481ms8444kbC++201.3kb2024-08-22 17:32:142024-08-22 17:32:14

Judging History

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

  • [2024-08-22 17:32:14]
  • 评测
  • 测评结果:AC
  • 用时:481ms
  • 内存:8444kb
  • [2024-08-22 17:32:14]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
template<typename T>
void read(T &a){
    #define gc getchar()
    char c;a=0;int f=1;
    while(!isdigit(c=gc))if(c=='-')f=-1;
    do a=a*10+c-'0';
    while(isdigit(c=gc));
    a*=f;
}
template<typename T>
void write(T a){
    if(a<0)putchar('-'),a=-a;
    if(a>=10)write(a/10);
    putchar('0'+a%10);
}
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef unsigned int ui;
typedef pair<int,int> PII;
typedef pair<ll,int> PLI;
mt19937 eg;
int n,P;
const int MAXN=810;
ll inv[MAXN];
ll f[MAXN][MAXN];
void madd(ll &x,ll y){x=(x+y)%P;}
int main(){
    // freopen("2.in","r",stdin);
    eg.seed(chrono::system_clock::now().time_since_epoch().count());
    cin>>n>>P;
    inv[1]=1;
    for(int i=2;i<=800;++i)inv[i]=P-inv[P%i]*(P/i)%P;
    f[0][0]=1;
    // for(int i=1;i<=n;++i)f[0][i]=-1;
    for(int i=1;i<=n-1;++i){
        for(int j=0;j<=n-i;++j){
            madd(f[i][j],f[i-1][0]);
            for(int k=2;k<=i-1;++k){
                madd(f[i][j],(f[k-1][0]-f[k-1][i-k+j])*f[i-k][j]);
            }
            f[i][j]=f[i][j]*inv[i+j]%P;
            // printf("f[%d][%d]=%lld\n",i,j,f[i][j]);
        }
    }
    ll res=f[n-1][0];
    for(int i=1;i<=n-1;++i)res=res*i%P;
    cout<<(res+P)%P<<'\n';
    return 0;
}

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

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

input:

4 114514199

output:

2

result:

ok 1 number(s): "2"

Test #2:

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

input:

10 998244353

output:

11033

result:

ok 1 number(s): "11033"

Test #3:

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

input:

100 1000000007

output:

270904395

result:

ok 1 number(s): "270904395"

Test #4:

score: 0
Accepted
time: 402ms
memory: 8068kb

input:

756 1001338769

output:

901942543

result:

ok 1 number(s): "901942543"

Test #5:

score: 0
Accepted
time: 469ms
memory: 8444kb

input:

793 1009036033

output:

301770320

result:

ok 1 number(s): "301770320"

Test #6:

score: 0
Accepted
time: 402ms
memory: 8172kb

input:

759 1005587659

output:

846376219

result:

ok 1 number(s): "846376219"

Test #7:

score: 0
Accepted
time: 434ms
memory: 8300kb

input:

773 1007855479

output:

1398019

result:

ok 1 number(s): "1398019"

Test #8:

score: 0
Accepted
time: 393ms
memory: 8036kb

input:

751 1006730639

output:

321287237

result:

ok 1 number(s): "321287237"

Test #9:

score: 0
Accepted
time: 442ms
memory: 8184kb

input:

778 1007760653

output:

430322899

result:

ok 1 number(s): "430322899"

Test #10:

score: 0
Accepted
time: 478ms
memory: 8396kb

input:

798 1007543827

output:

688720826

result:

ok 1 number(s): "688720826"

Test #11:

score: 0
Accepted
time: 475ms
memory: 8396kb

input:

796 1004841413

output:

258829347

result:

ok 1 number(s): "258829347"

Test #12:

score: 0
Accepted
time: 437ms
memory: 8264kb

input:

775 1005185189

output:

744278608

result:

ok 1 number(s): "744278608"

Test #13:

score: 0
Accepted
time: 481ms
memory: 8340kb

input:

800 1006012831

output:

508549367

result:

ok 1 number(s): "508549367"

Test #14:

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

input:

1 1001338769

output:

1

result:

ok 1 number(s): "1"

Test #15:

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

input:

2 1001338769

output:

1

result:

ok 1 number(s): "1"

Test #16:

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

input:

9 1009036033

output:

1780

result:

ok 1 number(s): "1780"

Test #17:

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

input:

14 1001338769

output:

43297358

result:

ok 1 number(s): "43297358"

Extra Test:

score: 0
Extra Test Passed