又是一道被咕了很久的题 貌似从WC2019之前咕到了现在

我们用f[i][s]表示现在最大独立集的大小为i 不可选集合为s

然后转移O(n)枚举加进来的点就比较简单啦

这个的复杂度是O(2^n*n^2)

据说有更科学的O(2^n*n)

但是显然这个做法就能过了(

详情参见PKUWC2019D1T1(大雾

代码扔这里了。

//Love and Freedom.
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdio>
#define ll long long
#define inf 20021225
#define mdn 998244353
#define N 21
using namespace std;
int read()
{
int s=,f=; char ch=getchar();
while(ch<'' || ch>'') {if(ch=='-') f=-;ch=getchar();}
while(ch>='' && ch<='') s=s*+ch-'',ch=getchar();
return f*s;
}
int ksm(int bs,int mi)
{
int ans=;
while(mi)
{
if(mi&) ans=1ll*ans*bs%mdn;
bs=1ll*bs*bs%mdn; mi>>=;
}
return ans;
}
int f[N][<<N],fac[N],inv[N],cnt[<<N],n,w[N];
void add(int x,int y)
{
w[x]|=<<y; w[y]|=<<x;
}
int A(int n,int m)
{
if(n<m) return ;
return 1ll*fac[n]*inv[n-m]%mdn;
}
void upd(int &x,int y){x+=x+y>=mdn?y-mdn:y;}
int main()
{
n=read(); int m=read(); fac[]=; int x,y;
for(int i=;i<=n;i++) fac[i]=1ll*fac[i-]*i%mdn;
inv[n]=ksm(fac[n],mdn-);
for(int i=n;i;i--) inv[i-]=1ll*inv[i]*i%mdn;
for(int i=;i<=m;i++) x=read(),y=read(),add(x-,y-);
for(int i=;i<n;i++) w[i]|=<<i;
f[][]=; int top=<<n;
for(int i=;i<top;i++) cnt[i]=cnt[i>>]+(i&);
for(int i=;i<n;i++) for(int s=;s<top;s++)
if(f[i][s]) for(int j=;j<n;j++) if(!((s>>j)&))
upd(f[i+][s|w[j]],1ll*f[i][s]*A(n-cnt[s]-,cnt[w[j]-(w[j]&s)]-)%mdn);
for(int i=n;i;i--) if(f[i][top-])
{
printf("%d\n",1ll*f[i][top-]*inv[n]%mdn);
break;
}
return ;
}

最新文章

  1. C语言 02 include
  2. miniui
  3. 从源代码的角度聊聊java中StringBuffer、StringBuilder、String中的字符串拼接
  4. mysql启动不成功显示The server quit without updating PID file的解决方法
  5. codeforces 483C.Diverse Permutation 解题报告
  6. Janus WinForms Controls
  7. AR 应收 表
  8. 502 Proxy Error The proxy server received an invalid response from an upstream server
  9. Android NDK R9d 安装
  10. PHP 5 数据类型
  11. 比较实用的webpack配置代码
  12. zabbix自动截图留档_python版
  13. Postgresql 启动could not create listen socket for &quot;localhost&quot;错误的解决
  14. 安装scala
  15. 使用guava过期map
  16. MYSQL之IFNULL
  17. FP ABPPMGR表 其它常用存储过程
  18. C/C++掌握技能(一)
  19. GAN初步——本质上就是在做优化,对于生成器传给辨别器的生成图片,生成器希望辨别器打上标签 1,体现在loss上!
  20. C#基础第五天-作业-用DataTable制作名片集

热门文章

  1. 为什么Redis可以方便地实现分布式锁
  2. 修改docker默认网段
  3. 学习C#20天有感
  4. 最近使用的两个工具 winscp和xshell
  5. linux 互斥量
  6. MySQL的常用JSON函数
  7. GIt 工作区与暂存区
  8. 【ABAP系列】SAP 关于出口(user-exit)MV50AFZ1的一些问题
  9. 浅谈WebService开发(一)转
  10. 前端 CSS 优先级 样式设置important