Ex - Balance Scale

考虑只有><的情况,相当于给每条边定向,当且仅当成环时不合法,那么方案数就是\(DAG\)的方案数

对于=,就是将两个点合并

然后对于一般的求\(n\)个点的\(DAG\)的方案数为\(\sum_{i=1}^n (-1)^{i+1}C_n^i2^{i\times(n-i)}\)(枚举入度为\(0\)的点的数量,然后设入度为\(0\)的点的集合为\(A\),所有点的集合为\(N\),那么就是\(A\)内部没有连边。\(A\)向\(N-A\)连边,但是这样不能保证\(N-A\)中没有入度为\(0\)的点,所以容斥)

容斥系数为\((-1)^{i+1}\)的原因:

一般的二项式反演为:\(\sum_{j=i}^n (-1)^{j-i}f(j)\),然后我们在\(DAG\)中\(i=1\),而\((-1)^{i-1}\)和\((-1)^{i+1}\)相等,所以是\((-1)^{i+1}\)

那么这道题是给定的边,且边的方向随意,所以我们考虑枚举独立集(相当于上文中的\(A\)),而普通的求\(DAG\)的边是任意连的,而这道题的边是给定的,所以就没有\(2^{i\times(n-i)}\),即设我们当前总集\(N\),枚举的子集为\(A\)(\(A\)内部属于同一连通块的点全部合并),那么\(A\)向\(N-A\)的连边就是固定的,所以用于转移的是剩下的部分\(N-A\)内部连边的方案数,系数就是\((-1)^{A中独立集的数量+1}\)

#include<bits/stdc++.h>
using namespace std;
const int MOD=998244353;
void add(int &x,int y){ x+=y; if(x>=MOD) x-=MOD; if(x<0) x+=MOD; }
int n,m,f[1<<17],cnt[1<<17],a[400],b[400],fa[18];
int find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i) scanf("%d%d",&a[i],&b[i]);
for(int i=1;i<(1<<n);++i) cnt[i]=cnt[i>>1]+(i&1);
for(int s=1;s<(1<<n);++s){
for(int i=1;i<=n;++i) fa[i]=i;
for(int i=1;i<=m;++i)
if((s&(1<<a[i]-1))&&(s&(1<<b[i]-1))){
int x=find(a[i]),y=find(b[i]);
if(x!=y) fa[x]=y,--cnt[s];
}
}
f[0]=1;
for(int s=1;s<(1<<n);++s)
for(int t=s;t;t=((t-1)&s)){
if(cnt[t]&1) add(f[s],f[s^t]);
else add(f[s],-f[s^t]);
// if(t==0) break;
}
printf("%d",f[(1<<n)-1]); return 0;
}

[abc306h/ex] Balance Scale的更多相关文章

  1. 【搜索+set去重】Balance Scale

    Balance Scale 题目描述 You, an experimental chemist, have a balance scale and a kit of weights for measu ...

  2. 每日英语:Boost Your Balance; Avoid Falls

    If you find yourself needing to sit down to take off your shoes, it might be time to start paying at ...

  3. Counterfeit Dollar -----判断12枚钱币中的一个假币

     Counterfeit Dollar Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u ...

  4. POJ 1013 Counterfeit Dollar

    Counterfeit Dollar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36206   Accepted: 11 ...

  5. poj1013.Counterfeit Dollar(枚举)

    Counterfeit Dollar Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 415  Solved: 237 Description Sally ...

  6. Counterfeit Dollar 分类: POJ 2015-06-12 15:28 19人阅读 评论(0) 收藏

    Counterfeit Dollar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 41559   Accepted: 13 ...

  7. codeforces 630D Hexagons!

    D. Hexagons! time limit per test 0.5 seconds memory limit per test 64 megabytes input standard input ...

  8. Poj 1013 Counterfeit Dollar / OpenJudge 1013(2692) 假币问题

    1.链接地址: http://poj.org/problem?id=1013 http://bailian.openjudge.cn/practice/2692 http://bailian.open ...

  9. POJ 1013 Counterfeit Dollar 集合上的位运算

    Description Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are t ...

  10. D - Counterfeit Dollar(第二季水)

    Description Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are t ...

随机推荐

  1. delphi+sql数据库增加,删除,修改,查询操作

    需要注意的是,open一般用于查询(select),exesql用于修改,插入,删除(update,insert,delete) 增加 with dm.DataModule1.ADOQuery1 do ...

  2. HTML5 给网站添加图标

    1.首先将图标上传到对应的目录下 2.在网页的index.html,添加已下代码到<head>标签里 <link rel="icon" href="i_ ...

  3. 寻找可靠的长久的存储介质之旅,以及背后制作的三个网页“图片粘贴转base64”、“生成L纠错级别的QR码”、“上传文件转 base64以及粘贴 base64 转可下载文件”

    其实对于目前的形式来说,虽然像 U 盘.固态硬盘.甚至光盘这些信息储存介质(设备)的容量越来越高,但是不得不说这些设备的可靠性依然像悬着的一块石头,虽然这块石头确实牢牢的粘在天花板上,但是毕竟是粘上去 ...

  4. 什么是MIME类型-基础知识补全

    MIME类型(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)是一种标准,用于标识互联网上传输的文件类型.它最初是为电子邮件设计的,后来被广泛应用于W ...

  5. 【Web】前端框架对微软老旧浏览器的支持

    零.原因 最近要做一个项目,要能在学校机房运行的,也要在手机上运行.电脑和手机,一次性开发,那最好的就是响应式前端框架了.手机和正常的电脑兼容性问题应该都不大,但是学校机房都是Win7的系统,自带的都 ...

  6. 如何查看 linux 发行版本

    以 debian 10 buster 为例 有时候我们需要知道当前正在使用的 linux 的发行版本信息...可以通过下面几种方式来查看 使用 lsb_release 命令查看 lsb_release ...

  7. H5 ios端底部安全距离CSS

    html 头部添加 <meta name="viewport" content="width=device-width, initial-scale=1.0,min ...

  8. 机器人操作系统ROS2之安装(Ubuntu 24)

    根据官网说明,ROS2是支持MAC的,本来打算在手头的MAC 15.3.2装一个,虽然要自己编译ROS2系统,但是想着比虚拟机性能好,就兴冲冲的开始了,也没在意官网提示尽量还是装安装版.最后折腾了几天 ...

  9. Harmony 动态路由框架:TheRouter 开源

    TheRouter 是一个用于移动端APP,包括 Android.iOS.Harmony 三端的模块化.组件化开发的一整套解决方案框架.提供了三端高一致性,对移动端开发者更友好,让开发人员更适应,使用 ...

  10. Windows管理小工具

    Windows 管理小工具 概述 Windows 管理小工具 是一个基于批处理脚本的多功能工具,旨在帮助用户快速管理 Windows 系统中的常见设置和功能.通过简单的菜单操作,用户可以轻松完成 Wi ...