xsyProblem A: 密集子图(graph)
- f[i][S]三进制压缩表示最长路为i,0代表不在该集合,1代表不是最短路为i集合,2代表是最短路集合, 转移枚举i+1集合是那些, 乘以概率即可
- 预处理保证复杂度
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<iostream>
#define ll long long
#define mmp make_pair
#define M 13
#define N 610000
using namespace std;
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;
}
const int mod = 998244353;
void add(int &x, int y) {
x += y;
x -= x >= mod ? mod : 0;
}
int mul(int a, int b) {
return 1ll * a * b % mod;
}
int poww(int a, int b) {
int ans = 1, tmp = a;
for(; b; b >>= 1, tmp = mul(tmp, tmp)) if(b & 1) ans = mul(ans, tmp);
return ans;
}
int n, k, note[M][M], q[4100][4100], f[M][N], g[N], h[N], u, pw[M], cnt;
int main() {
n = read(), k = read();
u = (1 << (n - 1)) - 1;
for(int i = 0; i <= n; i++) pw[i] = (1 << i);
for(int i = 1; i <= (n * (n - 1)); i++) {
int vi = read(), vj = read(), p = read(), q = read();
note[vi][vj] = mul(p, poww(q, mod - 2));
}
for(int i = 0; i <= u; i++) {
for(int j = 0; j <= u; j++) {
if((i | j) == i) {
q[i][j] = ++cnt;
int s = (i ^ j), t = j;
g[cnt] = h[cnt] = 1;
for(int r = 2; r <= n; ++r)
if(t & pw[r - 2]) {
int p = 1;
for(int l = 2; l <= n; l++) {
if(s & pw[l - 2]) p = mul(p, (1 - note[l][r] + mod) % mod);
}
g[cnt] = mul(g[cnt], (1 - p + mod));
h[cnt] = mul(h[cnt], p);
h[cnt] = mul(h[cnt], (1 - note[1][r] + mod));
}
}
}
}
for(int s = 0; s <= u; s++) {
f[1][q[s][s]] = 1;
for(int i = 2; i <= n; i++) if(s & pw[i - 2]) f[1][q[s][s]] = mul(f[1][q[s][s]], note[1][i]);
}
for(int i = 1; i < k; i++) {
for(int s = 0; s <= u; s++) {
for(int now = s; now; now = (now - 1) & s) {
if(!f[i][q[s][now]]) continue;
for(int t = (u ^ s); t; t = (t - 1) & (u ^ s)) {
add(f[i + 1][q[s | t][t]], mul(mul(f[i][q[s][now]], g[q[now | t][t]]), h[q[(now ^ s) | t][t]]));
}
}
}
}
int ans = 0;
for(int i = 1; i <= k; i++)
for(int s = 0; s <= u; s++) add(ans, f[i][q[u][s]]);
cout << ans <<"\n";
return 0;
}
xsyProblem A: 密集子图(graph)的更多相关文章
- hdu 3879 最大密集子图(点和边均带权)(模板)
/* 最大权闭合图,可以用最大密集子图来解速度更快复杂度低 题解:胡伯涛<最小割模型在信息学竞赛中的应用> 点和边均带权的最大密集子图 s-i,权为U=点权绝对值和+边的所有权值 i-t, ...
- poj 3155 二分+最小割求实型最小割(最大密集子图)
/* 最大密集子图子图裸题 解法:设源点s和汇点t 根据胡波涛的<最小割模型在信息学中的应用> s-每个点,权值为原边权和m, 每个点-t,权值为m+2*g-degree[i], 原来的边 ...
- 最大密集子图(01分数规划+二分+最小割)POJ3155
题意:给出一副连通图,求出一个子图令g=sigma(E)/sigma(V); h[g]=sigma(E)-g*sigma(V):设G是最优值 则当h[g]>0:g<G h[g]<0, ...
- 大规模SNS中兴趣圈子的自动挖掘
转自:http://www.infoq.com/cn/articles/zjl-sns-automatic-mining 一.为何要在大规模SNS中挖掘兴趣圈子 随着国外的facebook.twitt ...
- dot 语法全介绍
0. 保存 保存为 pdf:dot -Tpdf iris.dot -o iris.pdf 1. 基本 (1)无向图.有向图.子图 graph G {} // 无向图 digraph G {} // 有 ...
- noip模拟27[妹子图·腿·腰](fengwu半仙的妹子们)
\(noip模拟27\;solutions\) 这次吧,我本来以为我能切掉两个题,结果呢??只切掉了一个 不过,隔壁Varuxn也以为能切两个,可惜了,他一个都没切...... 确实他分比我高一点,但 ...
- py2neo学习记录
py2neo 通用 # -*- coding: UTF-8 -*- from py2neo import Graph, Node, Relationship, walk, NodeMatcher, R ...
- codeforces 1082G - Petya and Graph 最大权闭合子图 网络流
题意: 让你选一些边,选边的前提是端点都被选了,求所有的边集中,边权和-点权和最大的一个. 题解: 对于每个边建一个点,然后就是裸的最大权闭合子图, 结果比赛的时候我的板子太丑,一直T,(不会当前弧优 ...
- Factor Graph因子图
参考链接1: 参考链接2: 参考ppt3: Factor Graph 是概率图的一种,概率图有很多种,最常见的就是Bayesian Network (贝叶斯网络)和Markov Random Fiel ...
随机推荐
- learning makefile grammar
- Python *Mix_w3
1.基本数据类型(int,bool,str) int 整数 str 字符串. 一般不存放大量的数据 bool 布尔值. 用来判断. True, False list 列表.用来存放大量数据, []表示 ...
- WindowsForms 调用API
WindowsForms 后台 using System;using System.Collections.Generic;using System.ComponentModel;using Syst ...
- .net Monitor产生SynchronizationLockException异常的原因
有时在使用Monitor进行并发同步编程时,会产生SynchronizationLockException异常,抛出的异常内容是"Object synchronization method ...
- redis-sentinel主从复制高可用
Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端 ...
- python_day4
昨日回顾: 1. 整型 python2 有长整型 python3 没有长整型 2.布尔值 转换 3.字符串详解 下 ...
- nodejs 安装失败 ,出现error 2502 和error2503
出现error 2502 和error2503是因为win8的权限问题所导致的,具体说就是要以管理员身份进行安装就可以解决,下面详细来说一下. 1.cmd命令行点击以管理员身份运行. 2.这时候就可以 ...
- 第一次学习手游开发:Flappy Bird制作
周末有空,学习下手游开发,因为本人压根没有基础,于是找了个视频,跟着教程撸了个Flappy Bird. 感谢 SwiftV课堂 提供的教学视频 源码地址: https://github.com/phe ...
- lettuce行为驱动框架实例
练习: 一:e1_MyFirstBDD 使用方法的方式实现阶乘的计算 zero.feature: Feature: Compute factorial In order to play with Le ...
- C#泛型中的抗变和协变
在.net4之前,泛型接口是不变的..net4通过协变和抗变为泛型接口和泛型委托添加了一个重要的拓展 1.抗变:如果泛型类型用out关键字标注,泛型接口就是协变的.这也意味着返回类型只能是T. 实例: ...