首页 > 其他分享 >「CF848D」Shake It!

「CF848D」Shake It!

时间:2023-10-06 20:34:11浏览次数:19  
标签:ch int CF848D sum MAXN Shake ll define

\(\text{「CF848D」Shake It!}\)

\(\text{Solution}\)

我们可以发现题目中的图可以拆分为若干个递归的子结构,可以对这些子结构考虑 \(\text{DP}\),设 \(f(i,j)\) 表示考虑对一个子结构 \((s,t)\) 加入 \(i\) 个点后形成的图最小割为 \(j\) 的本质不同方案数。推一下发现 \(f(i,j)\) 难以转移,发现子问题实质上在 \((s,t)\) 拓展若干次点 \(u\) 形成的结构 \((s,u)\) 和 \((u,t)\),所以考虑设一个辅助状态 \(g(i,j)\) 表示对 \((s,t)\) 加入 \(i\) 个点后且保证只对 \((s,t)\) 拓展一次形成的图的最小割为 \(j\) 的本质不同方案数,先考虑转移 \(g(i,j)\),容易发现

\[g(i,j)=\sum_{k}\sum_{min(x,y)=j}f(k,x)f(i-k-1,y) \]

可以通过计算 \(f,g\) 的后缀和 \(F(i,j)=\sum_{k\ge j}f(i,k),G(i,j)=\sum_{k\ge j}g(i,k)\) 来降低复杂度

\[G(i,j)=\sum_{k}F(k,j)F(i-k-1,j) \]

考虑转移 \(f(i,j)\),发现 \(f(i,j)\) 便是在 \((s,t)\) 作用若干次 \(g(i_k,j_k)\) 的结果,满足 \(\sum i_k=i\) 且 \(\sum j_k=j-1\),考虑 \(k\) 个 \(g(i,j)\) 的内部次序,由隔板法可知为 \(\binom{g(i,j)+k-1}{k}\),用背包的方法合并即可,复杂度为 \(O(n^4\log n)\).

#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);
}

标签:ch,int,CF848D,sum,MAXN,Shake,ll,define
From: https://www.cnblogs.com/JIEGEHHHH/p/17744970.html

相关文章

  • kettle 调用ssl异常javax.net.ssl.SSLHandshakeException: No appropriate protocol (
    javax.net.ssl.SSLHandshakeException:Noappropriateprotocol(protocolisdisabledorciphersuitesareinappropriate  调用kettle发送邮件的时候本地没问题 服务器报异常 查看很多都是要改动 D:\java\jdk\jre\lib\security 下面的 java.security文件 ......
  • android wifi GROUP_HANDSHAKE
    AndroidWifiGROUP_HANDSHAKE实现流程作为一名经验丰富的开发者,我将向你介绍如何实现"androidwifiGROUP_HANDSHAKE"。首先,让我们了解一下整个流程:步骤描述步骤1设置WifiDirect相关权限和功能步骤2搜索可用的WifiDirect网络步骤3连接到选定的Wif......
  • redisshake
    如何实现RedisShake简介在开始介绍如何实现RedisShake之前,我们先来了解一下RedisShake是什么。RedisShake是一个用于在Redis之间进行数据迁移和同步的工具。它可以将一个Redis实例的数据迁移到另一个Redis实例,同时还支持增量同步。本文将指导你如何使用RedisShake......
  • 使用HttpUtil时报javax.net.ssl.SSLHandshakeException: No appropriate protocol异常
    在使用HttpUtil类时,针对某一个接口报错出现异常HttpGetInforesult=HttpUtil.getInfo(token,Url);但是这个getInfoUrl在postman上调用是成功的后来查找后发现问题是:在Java8及高版本以上的版本在调用ssl时会出现javax.net.ssl.SSLHandshakeException:Noappropriateprotoc......
  • javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10
    问题:报错:javax.net.ssl.SSLHandshakeException:TheserverselectedprotocolversionTLS10isnotacceptedbyclientpreferences[TLS12]解决方式:1、修改%JAVA_HOME%/jre/lib/security/java.security2、修改内容:jdk.tls.disabledAlgorithms删除TLSv13、删除前: https:......
  • javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabl
    一、问题现场二、处理方案VMoptions"-Djdk.tls.disabledAlgorithms=SSLv3,TLSv1.1,RC4,DES,MD5withRSA,DHkeySize<1024,ECkeySize<224,3DES_EDE_CBC,anon,NULL,includejdk.disabled.namedCurves"Workingdirectory$ProjectFileDir$ 三、处理结果......
  • mongoshake 数据同步
    https://blog.csdn.net/qq_39045558/article/details/122012558https://cloud.tencent.com/developer/article/1506903单机版mongo好像只支持全量同步......
  • 安装oh-my-zsh报错fatal: gnutls_handshake() failed: Error in the pull function的
    今天在安装oh-my-zsh时碰到一个安装问题,报错内容如下:root@ubuntu18:~/ohmyzsh/tools#./install.shCloningOhMyZsh...InitializedemptyGitrepositoryin/root/.oh-my-zsh/.git/fatal:unabletoaccess'https://github.com/ohmyzsh/ohmyzsh.git/':gnutls_handshake()......
  • java服务器更换jdk版本后报错:javax.net.ssl.SSLHandshakeException: No appropriate p
    java,服务器更换jdk版本后报错:Causedby:javax.net.ssl.SSLHandshakeException:Noappropriateprotocol(protocolisdisabledorciphersuitesareinappropriate)然后数据库出现:###Errorqueryingdatabase.Cause:java.lang.reflect.UndeclaredThrowableExc......
  • java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal al
    一、报错及部署环境Java程序访问测试域名https方法正常,访问生产域名https域名报错,报错如下javax.net.ssl.SSLHandshakeException:Receivedfatalalert:protocol_version测试环境使用KubeSphereingress生产环境使用阿里云ACK服务的ingress配置二、问题原因客户端......