BZOJ2302: [HAOI2011]Problem c
2017-03-25 14:59
281 查看
因为一旦有一个位置没有人能走到,那这种分配方案一定不合法,观察发现,令p[i]表示编号≤i的个数,一个方案合法一定有p[i]>=i
用f[i][j]表示p[i]为1~i的有j个的方案数,因为编号≤i的有固定的编号si个,所以j≥max(i-si,0)
code:
用f[i][j]表示p[i]为1~i的有j个的方案数,因为编号≤i的有固定的编号si个,所以j≥max(i-si,0)
code:
#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #include<bitset> #include<string> #include<vector> #include<cstdio> #include<cstdlib> #include<cstring> #include<climits> #include<complex> #include<iostream> #include<algorithm> #define ll long long using namespace std; inline int read() { char c; int x; while(!((c=getchar())>='0'&&c<='9')); x=c-'0'; while((c=getchar())>='0'&&c<='9') (x*=10)+=c-'0'; return x; } const int maxn = 310; const int maxm = 2100; int n,m; int s[maxn]; ll Mod; ll f[maxn][maxn],c[maxn][maxn]; int main() { int t=read(); while(t--) { n=read(); m=read(); Mod=read(); c[0][0]=1ll; for(int i=1;i<=n;i++) { c[i][0]=1ll; for(int j=1;j<=n;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j])%Mod; } memset(s,0,sizeof s); for(int i=1;i<=m;i++) { int x=read(),y=read(); s[y]++; } bool Ans=true; for(int i=1;i<=n;i++) { s[i]+=s[i-1]; if(s[i]+n-m<i) Ans=false; } if(!Ans){printf("NO\n");continue;} memset(f,0,sizeof f); int u=n-m; f[0][0]=1ll; for(int i=1;i<=n;i++) { int d=max(0,i-s[i]); for(int j=d;j<=u;j++) { for(int k=i-1-s[i-1];k<=j;k++) (f[i][j]+=f[i-1][k]*c[j][k]%Mod)%=Mod; } } printf("YES %lld\n",f [u]); } return 0; }
相关文章推荐
- BZOJ2302 [HAOI2011]Problem c 【dp】
- bzoj2302 [HAOI2011]Problem c
- bzoj2302: [HAOI2011]Problem c
- bzoj 2302: [HAOI2011]Problem c
- BZOJ2302: [HAOI2011]Problem c
- BZOJ2302 [HAOI2011]Problem c
- 【bzoj2302】【HAOI2011】problem c
- bzoj 2302: [HAOI2011]Problem c
- BZOJ2302 [HAOI2011]Problem c
- Bzoj2302--Haoi2011Problem c
- BZOJ 2302 HAOI2011 Problem c 动态规划
- [BZOJ2302][HAOI2011]Problem c(DP+组合数学)
- 【53.61%】【BZOJ 2302】[HAOI2011]Problem c
- BZOJ2302: [HAOI2011]Problem c|动态规划|组合数学
- 2302: [HAOI2011]Problem c
- BZOJ 2302: [HAOI2011]Problem c [DP 组合计数]
- bzoj 2302: [HAOI2011]Problem c(DP)
- 【bzoj2302】【HAOI2011】【problem c】【dp】
- bzoj 2302: [HAOI2011]Problem c dp+数学
- [HAOI2011][BZOJ2302] problem C 组合数+动态规划