[PKUWC 2018]随机算法
Description
给定一张有 \(n\) 个点 \(m\) 条边的无向图,生成 \(1\sim n\) 的全排列,假设一个排列是 \(p\) , \(S\) 是当前最大独立集;如果 \(S\cup {p_i}\) 是独立集就令 \(S=S\cup {p_i}\) ;
求这 \(n!\) 个独立集为最大独立集的概率,答案对 \(998244353\) 取模。
\(1\leq n\leq 20\)
Solution
我们记 \(mx_{i,j}\) 表示排好序的点以及这些点周围的的点的状态为 \(i\) ,有 \(j\) 个点还未选入序列,其中的最大独立集内点数最大值; \(f_{i,j}\) 表示该状态下的排列个数。
转移就是考虑这一位是将状态内的未选择的点排入排列内或者是重新在状态外再选点。
时间复杂度是 \(O(2^n\times n^2)\) ,并不满。
Code
#include <bits/stdc++.h>
#define lowbit(x) ((x)&(-x))
using namespace std;
const int N = 20+5, SIZE = (1<<20)+5, yzh = 998244353;
int n, m, u, v, sta[N], bin[N], f[SIZE][N], mx[SIZE][N], cnt[SIZE], inv[N];
void work() {
scanf("%d%d", &n, &m); bin[0] = inv[1]= 1;
for (int i = 1; i <= n; i++) bin[i] = bin[i-1]<<1;
for (int i = 2; i <= n; i++) inv[i] = -1ll*yzh/i*inv[yzh%i]%yzh;
for (int i = 1; i <= bin[n]; i++) cnt[i] = cnt[i-lowbit(i)]+1;
for (int i = 1; i <= m; i++) {
scanf("%d%d", &u, &v);
sta[u-1] |= bin[v-1]; sta[v-1] |= bin[u-1];
}
f[0][0] = 1;
for (int i = 0; i < bin[n]; i++)
for (int j = n; j >= 0; j--)
if (f[i][j]) {
if (j) {
if (mx[i][j-1] == mx[i][j]) (f[i][j-1] += 1ll*f[i][j]*j%yzh) %= yzh;
else if (mx[i][j-1] < mx[i][j]) mx[i][j-1] = mx[i][j], f[i][j-1] = 1ll*f[i][j]*j%yzh;
}
for (int k = 0; k < n; k++)
if (!(bin[k]&i)) {
int S = (i|sta[k]|bin[k]), t = cnt[sta[k]]-cnt[sta[k]&i];
if (mx[S][j+t] < mx[i][j]+1) mx[S][j+t] = mx[i][j]+1, f[S][j+t] = f[i][j];
else if (mx[S][j+t] == mx[i][j]+1) (f[S][j+t] += f[i][j]) %= yzh;
}
}
int ans = f[bin[n]-1][0];
for (int i = 1; i <= n; i++) ans = 1ll*ans*inv[i]%yzh;
printf("%d\n", (ans+yzh)%yzh);
}
int main() {work(); return 0; }
[PKUWC 2018]随机算法的更多相关文章
- [PKUWC 2018]随机游走
Description 题库链接 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\) ...
- LOJ #2540. 「PKUWC 2018」随机算法(概率dp)
题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...
- LOJ #2542. 「PKUWC 2018」随机游走(最值反演 + 树上期望dp + FMT)
写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT ...
- [PKUWC2018]随机算法
题意:https://loj.ac/problem/2540 给定一个图(n<=20),定义一个求最大独立集的随机化算法 产生一个排列,依次加入,能加入就加入 求得到最大独立集的概率 loj25 ...
- PKUWC 2018游记
PKUWC 2018游记 标签: Day\([-inf,0)\) 停课之后一直各种浪的飞起,考试rank20+,不搞颓但是学习很没有状态.还经常带着耳机被谢总抓了好几次,然后被拉过去谈话了好几次... ...
- A Dream (PKUWC 2018)
A Dream (PKUWC 2018) 这是一个梦. 从没有几分节日气氛的圣诞,做到了大雪纷飞的数九寒天. 忘了罢! 不记得时间,不记得地点.随着记忆的褪去,一切也只会不复存在. Day-34? D ...
- $PkuWc\ 2018$ 酱油记
PkuWc 2018 酱油记 1. Day -INF 又停了一个月课...... 感觉这个月的收获还是蛮大的,刚来的时候还只会线段树,到现在LCT都学了... 这个月不停在考试,自己考试技巧也提升了不 ...
- 【洛谷5492】[PKUWC2018] 随机算法(状压DP)
点此看题面 大致题意: 用随机算法求一张图的最大独立集:每次随机一个排列,从前到后枚举排列中的点,如果当前点加入点集中依然是独立集,就将当前点加入点集中,最终得到的点集就是最大独立集.求这个随机算法的 ...
- 微信红包中使用的技术:AA收款+随机算法
除夕夜你领到红包了吗?有的说“我领了好几K!”“我领了几W!” 土豪何其多,苦逼也不少!有的说“我出来工作了,没压岁钱了,还要发红包”.那您有去抢微信红包吗?微信群中抢“新年红包”春节爆红.618微信 ...
随机推荐
- Kafka consumer的参数
earliest: 当各分区下有已提交的offset时,从提交的offset开始消费:无提交的offset时,从头开始消费 latest :当各分区下有已提交的offset时,从提交的offset开始 ...
- asp.net 下载EXCEL文件
一.需要导入NPOI 库文件 打开VS2012 工具>>库程序包管理器>>管理解决方案的NuGet程序包,搜索NPOI,如下图 安装完成: 添加 using NPOI.HSSF ...
- 记录FormsAuthentication的使用方法
配置,配置mode="Forms",其他属性详见 MSDN(点我直接查看各authentication属性) . <configuration> <system. ...
- Unity里vertexShader里压扁模型来实现比较low的阴影
只有阴影pass,请自行合并,需要指定高度,忽略深度检测,需要控制好排序,或者去掉忽略,视情况而定,最后我觉得还是shadowmap好 Shader "Custom/MeshShadow&q ...
- MyCat - 背景篇(1)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. SQL与NoSQL 目前,对于互联网海量数据的存储以及处理,按使用场景,分为OLTP(联机事务处理,比如即时 ...
- Spring Boot 学习系列(10)—SpringBoot+JSP的使
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 解决问题 随着spring boot 框架的逐步使用,我们期望对于一些已有的系统进行改造,做成通用的脚手架, ...
- python 设置默认的导包路径
在python中 可以通过 sys 模块添加导包时的搜寻路径, sys.path 返回的是所有默认导包路径的列表(搜索次序从下标为零开始,直到寻找到需要导入的包结束) sys.path.insert( ...
- String-680. Valid Palindrome II
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...
- Android应用安全防护和逆向分析 ——apk反编译
概述 最近一直在学习Android应用安全相关和逆向分析的知识.现在移动app在安全方面是越来越重视了,特别是那些巨头企业涉及到钱的应用,那加密程度,简直是丧心病狂,密密麻麻.从这里可以看出,对于应用 ...
- gulp-load-task 解决 gulpfile.js 过大的问题
当我们在项目中使用gulp来实现前端自动化时,常常因任务太多导致gulpfile.js越来越臃肿,增加后期维护/变更成本.在计算机科学领域中,分治可以将我们的项目变得井然有序.所以,我们利用这个理念, ...