首页 > 其他分享 >【XSY3892】【hihocoder1147】时空阵(分层图dp)

【XSY3892】【hihocoder1147】时空阵(分层图dp)

时间:2022-10-30 14:14:26浏览次数:87  
标签:XSY3892 hihocoder1147 int ll ans define inv dp mod

设 \(dp(i,t,l)\) 表示已经定好前 \(i\) 层,共有 \(t\) 个节点,其中第 \(i\) 层有 \(l\) 个节点。

直接转移即可,注意一些细节:

  • 第 \(1\) 层只有 \(1\) 号节点。

  • 同层之间可以乱连,相邻层之间可以乱连,跨层之间不能连。

  • 需要钦定 \(n\) 号点在第 \(m+1\) 层。

#include<bits/stdc++.h>

#define N 110
#define ll long long
#define mod 1000000007

using namespace std;

int n,k;
ll pow2[N*N],fac[N],inv[N];
ll f[N][N][N];

void add(ll &x,ll y)
{
	if((x+=y)>=mod) x-=mod;
}

ll poww(ll a,ll b)
{
	ll ans=1;
	while(b)
	{
		if(b&1) ans=ans*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return ans;
}

void init()
{
	pow2[0]=fac[0]=1;
	for(int i=1;i<=n*n;i++)
		pow2[i]=(pow2[i-1]<<1ll)%mod;
	for(int i=1;i<=n;i++)
		fac[i]=fac[i-1]*i%mod;
	inv[n]=poww(fac[n],mod-2);
	for(int i=n-1;i>=0;i--)
		inv[i]=inv[i+1]*(i+1)%mod;
}

ll C(int n,int m)
{
	if(n<m) return 0;
	return fac[n]*inv[m]%mod*inv[n-m]%mod;
}

int main()
{
//	freopen("my_f.txt","w",stdout);
	scanf("%d%d",&n,&k);
	init();
	f[1][1][1]=1;
	ll ans=0;
	for(int i=2;i<=k+1;i++)
	{
		for(int t=i;t<=n-(k+1-i);t++)
		{
			for(int l=1;l<=t-(i-1);l++)
			{
				for(int p=1;p<=t-l-(i-2);p++)
					add(f[i][t][l],f[i-1][t-l][p]*poww(pow2[p]-1,l)%mod);
				f[i][t][l]=f[i][t][l]*pow2[C(l,2)]%mod;
				if(i<=k) f[i][t][l]=f[i][t][l]*C(n-(t-l)-1,l)%mod;//这里n-(t-l)再减去1的原因是需要钦定n在第m+1层
				else
				{
					f[i][t][l]=f[i][t][l]*C(n-(t-l)-1,l-1)%mod;
					add(ans,f[i][t][l]*pow2[l*(n-t)]%mod*pow2[C(n-t,2)]%mod);
				}
			}
		}
	}
	printf("%lld\n",ans);
	return 0;
}
/*
4 3
*/
/*
100 50
*/

标签:XSY3892,hihocoder1147,int,ll,ans,define,inv,dp,mod
From: https://www.cnblogs.com/ez-lcw/p/16841163.html

相关文章

  • wordpress编辑器增加粘贴图片上传服务器教程
    默认的编辑器没有粘贴上传图片功能,现在我们来增加一下安装插件网站后台,找到安装插件界面【插件-安装插件-搜索】 ThePaste  测试插件发布文章的时候,直接使用qq......
  • 【XSY3633】匹配(树形 DP,树链剖分,分治)
    考虑最普通的DP:设\(f_{u,i,0/1}\)表示\(u\)子树内恰好包含\(i\)条边的最大权匹配,其中\(u\)有无被匹配。这是个树上背包,暴力DP是\(O(n^2)\)的。可以发现\(f......
  • 【XSY3535】购物(决策单调性优化DP,分治,结论,背包)
    题面购物题解决策单调性全忘了……先考虑暴力怎么做,我们可以设\(f_{i,j}\)表示前\(i\)个商店买了\(j\)件物品的最小代价,然后有转移:\[f_{i,j}=\min_{k=0}^j(f_{i......
  • 【XSY3513】Multiple of Nine(状压DP)
    题意:转化后变为:给一张\(n\)个点的图,你需要给每个点染上\([1,k]\)中的某个颜色,图上有\(m\)条边,每条边\((u,v)\)有两种边权\(w_1\)(当\(u,v\)颜色相同时)和\(w_2\)......
  • (美化)WordPress网站添加自定义字体
    背景通过CSS属性@font-face和font-family可以实现加载自定义webfont,改变网页字体,实现美化效果。1.引用字体文件出于版权风险考虑,尽量使用免费可商用的字体作为webfont。本......
  • wordpress网站主题安装教程
    前面已经搭建好了网站,但是默认的页面比较简陋,我们需要更改一下外观现在我们安装新的主题外观,使网站更加的好看下载主题https://www.lovestu.com/corepress-free可以使......
  • 【XSY3270】Domino Colorings(轮廓线dp,状压)
    若已经知道了每个格子的颜色,我们可以用轮廓线DP(类似插头DP)判断棋盘是否能被多米诺骨牌填满,设\(dp[S]\)表示是否存在某种填法使得轮廓线每个位置是否被填的状态为\(S\)......
  • 【XSY3331】东非大裂谷(结论,DP)
    一般这种“分段,求每段极值和的最大值”的题都有两个结论:一段的最大值和最小值一定是该段的两个端点。证明:如果不是的话:那么我们显然可以把最小值和最大值所在位置之......
  • 【XSY2444】【BZOJ4042】【CERC2014】【luogu4757】Parades(树形dp+状压dp)
    题面Description从前有个A国,它有\(n\)个城市和\(n-1\)条道路。每条路连接两个城市。城市之间两两可达。每个城市与不超过10条道路相连。现在给出\(m\)条路径,要求从这些......
  • 【XSY1976】【BZOJ2286】【SDOI2011】消耗战(虚树,dp)
    这题的dp思想还是比较容易想的,关键是如何保证时间复杂度,这时就用到了虚树的技巧。1.虚树是什么?(虚树的性质)不妨设现在询问给出了\(k\)个点,我们命名这些节点为关键节点。......