对于 20%的数据,满足 N≤10;
对于 40%的数据,满足 N≤18;
对于 70%的数据,满足 N≤550;
对于 100%的数据,满足 3≤N≤4200,P≤109
/************************************************************** Problem: 1925 User: zhangenming Language: C++ Result: Accepted Time:480 ms Memory:1444 kb ****************************************************************/ #include <bits/stdc++.h> #define ll long long #define inf 1e9+10 #define mod 10000 using namespace std; inline int read(){ int x=0;int f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch==‘-‘) f=-1;ch=getchar();} while(isdigit(ch)) {x=x*10+ch-‘0‘;ch=getchar();} return x*f; } const int MAXN=1e4+10; ll f[2][MAXN],n,p; int main(){ n=read();p=read(); int o=1; f[o][1]=1; for(int i=2;i<=n;i++){ o^=1; for(int j=1;j<=i;j++){ f[o][j]=(f[o][j-1]+f[o^1][i-j])%p; } } printf("%lld\n",f[o][n]*2%p); return 0; }
原文:https://www.cnblogs.com/something-for-nothing/p/9426880.html