「CF848D」Shake It!
我们可以发现题目中的图可以拆分为若干个递归的子结构,可以对这些子结构考虑 ,设 表示考虑对一个子结构 加入 个点后形成的图最小割为 的本质不同方案数。推一下发现 难以转移,发现子问题实质上在 拓展若干次点 形成的结构 和 ,所以考虑设一个辅助状态 表示对 加入 个点后且保证只对 拓展一次形成的图的最小割为 的本质不同方案数,先考虑转移 ,容易发现
可以通过计算 的后缀和 来降低复杂度
考虑转移 ,发现 便是在 作用若干次 的结果,满足 且 ,考虑 个 的内部次序,由隔板法可知为 ,用背包的方法合并即可,复杂度为 .
#include<bits/stdc++.h>
#define ll long long
#define PI pair<int,int>
#define PII pair< pair<int,int> , int >
#define fi first
#define se second
#define mp(x,y) make_pair(x,y)
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define MAXN (105)
#define MAXM (105)
#define MOD (1000000007)
using namespace std;
template<typename type>
void read(type &x)
{
x=0;char ch=0;bool ff=0;
while(ch<'0'||ch>'9'){ff|=!(ch^'-');ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
x=ff?-x:x;
}
ll qpow(ll x,ll y)
{
ll res=1;
while(y)
{
if(y&1ll) res=res*x%MOD;
x=x*x%MOD,y>>=1ll;
}
return res;
}
int n,m;
ll fac[MAXN],ifac[MAXN],f[MAXN][MAXM],F[MAXN][MAXM],G[MAXN][MAXM];
void init()
{
fac[0]=1;
for(int i=1;i<=100;i++)
fac[i]=fac[i-1]*(ll)i%MOD;
ifac[100]=qpow(fac[100],MOD-2);
for(int i=99;i>=0;i--)
ifac[i]=ifac[i+1]*(ll)(i+1ll)%MOD;
}
int main()
{
init();
read(n),read(m);
f[0][0]=1,F[0][1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i+1;j++)
for(int k=0;k<i;k++)
G[i][j]=(G[i][j]+F[k][j]*F[i-k-1][j]%MOD)%MOD;
for(int j=1;j<=i+1;j++)
{
ll gnow=((G[i][j]-G[i][j+1])%MOD+MOD)%MOD;
for(int a=n;a>=0;a--)
{
for(int b=n+1;b>=0;b--)
{
ll sum=0,dmul=1;
for(int k=0,sa=0,sb=0;sa<=a&&sb<=b;k++,sa+=i,sb+=j)
{
sum=(sum+dmul*ifac[k]%MOD*f[a-sa][b-sb]%MOD)%MOD;
dmul=dmul*(ll)(gnow+k)%MOD;
}
f[a][b]=sum;
}
}
}
for(int j=i+1;j;j--)
F[i][j]=(F[i][j+1]+f[i][j-1])%MOD;
}
printf("%lld",((F[n][m]-F[n][m+1])%MOD+MOD)%MOD);
}
作者:littlepinkpig
出处:https://www.cnblogs.com/littlepinkpig/p/17744970.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
你可以在这里自定义其他内容
作者:littlepinkpig
出处:https://www.cnblogs.com/littlepinkpig/p/17744970.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现