/*
很清新的一道题(相比上一道题)
g[S]表示该 S集合中胡乱连的所有方案数, f[S] 表示S集合的答案
那么F[S] 等于G[S]减去不合法的部分方案
不合法的方案就枚举合法的部分就好了 g[S]求法可以由选择一个点和其他没被选择的之间连边的 */
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
#include<cmath>
#define ll long long
#define M 16
#define mmp make_pair
using namespace std;
const int mod = 1000000007;
void add(int &x, int y) {
x += y;
x -= x >= mod ? mod : 0;
x += x < 0 ? mod : 0;
} int read() {
int nm = 0, f = 1;
char c = getchar();
for(; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for(; isdigit(c); c = getchar()) nm = nm * 10 + c - '0';
return nm * f;
}
int poww(int a, int b) {
int ans = 1, tmp = a;
for(; b; b >>= 1, tmp = 1ll * tmp * tmp % mod) if(b & 1) ans = 1ll * ans * tmp % mod;
return ans;
} int f[1 << M], g[1 << M], a[M][M], n; int main() {
n = read();
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
a[i][j] = read();
}
}
f[0] = g[0] = 1;
for(int i = 1; i < (1 << n); i++) {
int x = -1, ans = 1;
for(int j = 0; j < n; j++) {
if((i & (1 << j)) == 0) continue;
if(x == -1) x = j;
else {
ans = 1ll * ans * (a[x][j] + 1) % mod;
}
}
g[i] = 1ll * g[i ^ (1 << x)] * ans % mod;
}
for(int i = 1; i < (1 << n); i++) {
f[i] = g[i];
int k = i ^ (i & -i);
for(int j = k; j; j = (j - 1) & k) {
add(f[i], -1ll * g[j] * f[i ^ j] % mod);
}
}
cout << f[(1 << n) - 1] << "\n";
return 0;
}

BZOJ2560串珠子的更多相关文章

  1. bzoj2560串珠子 状压dp+容斥(?)

    2560: 串珠子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 515  Solved: 348[Submit][Status][Discuss] ...

  2. bzoj2560 串珠子

    Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不 ...

  3. bzoj2560串珠子(子集dp)

    铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在ci, ...

  4. 题解-bzoj2560 串珠子

    刚被教练数落了一通,心情不好,来写篇题解 Problem bzoj2560 题目简述:给定\(n\)个点的,每两个点\(i,j\)之间有\(c_{i,j}\)条直接相连的路(其中只能选一条或不选),问 ...

  5. 2019.02.09 bzoj2560: 串珠子(状压dp+简单容斥)

    传送门 题意简述:nnn个点的带边权无向图,定义一个图的权值是所有边的积,问所有nnn个点都连通的子图的权值之和. 思路: fif_ifi​表示保证集合iii中所有点都连通其余点随意的方案数. gig ...

  6. 【题解】Bzoj2560串珠子

    挺强的……容斥+状压DP.首先想到如果可以求出f[k],f[k]代表联通状态为k的情况下的合法方案数,则f[k] = g[k] - 非法方案数.g[k]为总的方案数,这是容易求得的.那么非法方案数我们 ...

  7. bzoj2560串珠子——子集DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2560 转载: 很明显的状压dp 一开始写的dp可能会出现重复统计的情况 而且难以去重 假设 ...

  8. [BZOJ2560]串珠子:状压DP+容斥原理

    分析 为什么我去年6月做过这道题啊,估计当时抄的题解. 具体做法就是令\(f[S]\)表示保证连通点集\(S\)的方案数,\(g[S]\)表示不保证连通点集\(S\)的方案数. 容易想到: \[g[S ...

  9. bzoj2560 串珠子 状压DP

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2560 题解 大概是这类关于无向图的联通性计数的套路了. 一开始我想的是这样的,考虑容斥,那么就 ...

随机推荐

  1. InvokeRequired和Invoke(转)

    C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用ne ...

  2. IIC总线初识

    IIC总线初识 IIC总线的拓扑结构 八位数据分布: 写操作: 读操作: IIC总线的工作频率: IIC总线的时序(重要): 起始位的时序: 用verilog代码描述这一过程: 此处是用来描述SDA信 ...

  3. Qsys 设计流程---Qsys System Design Tutorial

    Qsys 设计流程 ---Qsys System Design Tutorial 1.Avalon-MM Pipeline Bridge Avalon-MM Pipeline Bridge在slave ...

  4. WebApi安全性 使用TOKEN+签名验证 (秘钥是GUID的,私有的,不是雙方的,并不在网络连接上传输)

    转http://www.cnblogs.com/MR-YY/archive/2016/10/18/5972380.html WebApi安全性 使用TOKEN+签名验证   首先问大家一个问题,你在写 ...

  5. Hiero_FnNukeShotExporter的解析与修改

    研究对象:Hiero中的FnNukeShotExporter脚本 研究目的:修改FnNukeShotExporter使得可以将多个TrackItem导入到一个.nk中   FnNukeShotExpo ...

  6. Django 模板语法

    模板语法之变量 变量在HTML中的表示:{{var_name}} 变量取值:句点符 "." views: def index(request): import datetime s ...

  7. Linux From Scratch [3]

    1. 为了编译glibc,我们需要kernel header. make mrproper # clean kernel tree make INSTALL_HDR_PATH=dest headers ...

  8. Python单元测试框架之pytest 3 -- fixtures

    From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...

  9. ALGO-141_蓝桥杯_算法训练_P1102

    定义一个学生结构体类型student,包括4个字段,姓名.性别.年龄和成绩.然后在主函数中定义一个结构体数组(长度不超过1000),并输入每个元素的值, 程序使用冒泡排序法将学生按照成绩从小到大的顺序 ...

  10. gerrit配置和使用

    参考http://www.cnblogs.com/tesky0125/p/5973642.html 1.安装gerrit replication插件 mkdir ~/tmp cp gerrit-2.1 ...