过样例 WA 0 求调
查看原帖
过样例 WA 0 求调
578029
ivyjiao楼主2024/10/14 11:39

rt,是不是有哪个地方有个字母敲错了之类的

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=301;
int t,n,m,cnt,p,a[N],b[N],c[N],f[N][N],bzh[N],dp[N][N];
signed main(){
    cin>>t;
    while(t--){
        memset(c,0,sizeof c);
        memset(bzh,0,sizeof bzh);
        memset(dp,0,sizeof dp);
        cin>>n>>m>>p;
        for(int i=1;i<=m;i++) cin>>a[i]>>b[i];
        for(int i=1;i<=m;i++) c[b[i]]++;
        for(int i=n;i>=1;i--) bzh[i]=bzh[i+1]+c[i];
        for(int i=1;i<=n;i++){
            if(bzh[i]>n-i+1){
                cout<<"NO"<<endl;
                goto T4;
            }
        }
        cnt=n-m;
		for(int i=0;i<=n;i++){ 
			f[i][0]=1;
			for(int j=1;j<=n;j++){
				f[i][j]=(f[i-1][j-1]+f[i-1][j])%p;
			}
		}
        dp[n+1][0]=1;
        for(int i=n;i>=1;i--){
            for(int j=bzh[i];j<=n-i+1;j++){
                for(int k=c[i];k<=j-bzh[i+1];k++){
                    dp[i][j]=(dp[i][j]+dp[i+1][j-k]*f[cnt-j+k+bzh[i+1]][k-c[i]])%p;
                }
            }
        }
        cout<<"YES"<<" "<<dp[1][n]<<endl;
        T4:;
    }
}
2024/10/14 11:39
加载中...