[PKUWC2018]随机算法

时间:2023-02-19 13:33:06

题意:https://loj.ac/problem/2540

给定一个图(n<=20),定义一个求最大独立集的随机化算法

产生一个排列,依次加入,能加入就加入

求得到最大独立集的概率

loj2540 「PKUWC 2018」随机算法

本质就是计数题

每个点有三种状态:考虑过且在独立集中,考虑过未在独立集中,未考虑

本来在集合里的点不能知道有哪些,而且不能加入的点的排列也不好确定。

一个好的方法是:把考虑过的点放在一起

然后在加入一个点的时候,把其他不能加入的点都考虑上,并处理方案数。

设f[i][S]表示,独立集大小为i,不能再选择的点集合是S的方案数

每次选择一个能加入的点j,然后更新能选择的集合和集合大小,顺便处理排除掉的点的方案数

就是一个排列,其实就是把后面尚未考虑的位置加入一下,

注意这里不用考虑j的位置,j位置钦定为从前往后第一个能选择的位置

i从n往下找到第一个方案数不是0的f[k][全集]

最后乘上n!的逆元即可

O(n^2*2^n)传说可过

对于不可以选择的集合S,对应的最大独立集确定

mxS记录S集合最大独立集

所以类似最短路条数,mxS更新的时候,把方案数设成0

这样也能求出最大独立集方案数。

O(n*2^n)

思路有点类似某次模拟赛T3,我在加入一个数的时候,就把能产生的贡献和影响都计算上

因为只有在枚举这个转移的时候才知道加入的哪个点,这样不用考虑加入进去的点都是谁了。

也方便处理不能选择的那些点的排列。

(有了第二种做法,一般的20个点的最大独立集也可以做了,20个点的最大独立集方案数也可以求)

[PKUWC2018]随机算法的更多相关文章

  1. 【洛谷5492】&lbrack;PKUWC2018&rsqb; 随机算法(状压DP)

    点此看题面 大致题意: 用随机算法求一张图的最大独立集:每次随机一个排列,从前到后枚举排列中的点,如果当前点加入点集中依然是独立集,就将当前点加入点集中,最终得到的点集就是最大独立集.求这个随机算法的 ...

  2. LG5492 &lbrack;PKUWC2018&rsqb;随机算法

    题意 有一种贪心求最大独立集的算法: 随机一个排列 按顺序加入独立集,如果一个点能加入,就加入\({S}\) 给出一张图,问得出正确答案的概率. \(n \leq 20\) 传送门 思路 用 \(dp ...

  3. 题解-PKUWC2018 随机算法

    Problem loj2540 题意简述:给定\(n\)个点的无向图,给定求最大独立集的近似算法:随机排列\(1\cdots n\),按照该排列顺序贪心构造最大独立集(即对每个点能加入独立集就加),求 ...

  4. LOJ2540 &lbrack;PKUWC2018&rsqb; 随机算法 【状压DP】

    题目分析: 听说这题考场上能被$ O(4^n) $的暴力水过,难不成出题人是毕姥爷? 首先思考一个显而易见的$ O(n^2*2^n) $的暴力DP.一般的DP都是考虑最近的加入了哪个点,然后删除后递归 ...

  5. LOJ2540 PKUWC2018 随机算法 状压DP

    传送门 两种$DP$: ①$f_{i,j}$表示前$i$次选择,最大独立集为$j$时达到最大独立集的方案总数,转移:$a.f_{i,j}+=f_{i+1,j+2^k}$(保证$k$加入后符合条件):$ ...

  6. &lbrack;LOJ2540&rsqb; &lbrack;PKUWC2018&rsqb; 随机算法

    题目链接 LOJ:https://loj.ac/problem/2540 Solution 写的时候脑子不太清醒码了好长然后时间\(LOJ\)垫底... 反正随便状压\(dp\)一下就好了,设\(f[ ...

  7. &lbrack;LOJ&num;2540&rsqb;&lbrack;PKUWC2018&rsqb;随机算法&lpar;概率DP&rpar;

    场上数据很水,比较暴力的做法都可以过90分以上,下面说几个做法. 1. 暴力枚举所有最大独立集,对每个独立集分别DP.复杂度玄学,但是由于最大独立集并不多,所以可以拿90. 2. dp[S][k]表示 ...

  8. 【LOJ2540】「PKUWC2018」随机算法

    题意 题面 给一个 \(n\) 个点 \(m\) 条边的无向图.考虑如下求独立集的随机算法:随机一个排列并按顺序加点.如果当前点能加入独立集就加入,否则不加入.求该算法能求出最大独立集的概率. \(n ...

  9. 微信红包中使用的技术&colon;AA收款&plus;随机算法

    除夕夜你领到红包了吗?有的说“我领了好几K!”“我领了几W!” 土豪何其多,苦逼也不少!有的说“我出来工作了,没压岁钱了,还要发红包”.那您有去抢微信红包吗?微信群中抢“新年红包”春节爆红.618微信 ...

随机推荐

  1. hdu 4421 2-SAT问题

    思路:我们需要判断是否有满足的a[n],其实也就是对每一个二进制位进行判断,看是否有满足的.那么我们每次取出一个二进制位,这样每一位只有0,1两种状态,就成了比较典型的2-SAT问题了. #inclu ...

  2. windows nfs server for linux

    摘要 在开发嵌入式系统的过程中,为了方便调试与文件共享,需要使用到nfs,即网络文件系统,这位板子的调试测试带来了很大的方便.之前在linux系统下开发,与ARM11核心板 linux系统对接共享也比 ...

  3. java中instanceof的用法

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...

  4. linux下统计目录下所有子目录的大小

    du -sh * --exclude=tar |awk '{v=substr($1,length($1),1)}v=="G"{$0="1G "$0}v==&qu ...

  5. Java I&sol;O流输入输出,序列化,NIO,NIO&period;2

    Java IO流 File类: File类是java.io包下代表和平台无关的文件和目录,File不能访问文件内容本身. File类基本操作: System.out.println("判断文 ...

  6. 在JQuery中获取URL中的参数值

    添加一个js文件,代码如下 // * jQuery url get parameters function [获取URL的GET参数值] // *character_set UTF-8 // * au ...

  7. python之斐波那契数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数 这样的一个数列:0,1,1,2,3,8,13,21,34…….. 特别指出:0不是第一项,而是第零项. 在数学上被以 递归的方法定 ...

  8. c&plus;&plus;将文件之间编译关系降到最低

    类的定义式:类的定义,可以知道类的大小 类的实现: 类的声明:类的声明,表明,使用此类,编译不会出错 C++并没有把“将接口从实现中分离”做得很好.Class的定义式不只详细叙述了Class接口,还包 ...

  9. python-多线程3-生产者消费者

    '''生产者和消费者''' ''' 用python写一个多线程的生产者和消费者 生产者x x>0,有东西,print(不生产) x=0,没东西,print(生产) for循环 消费者x x=0, ...

  10. (转&rpar;C&num;文件操作大全

    转自:https://www.cnblogs.com/wangshenhe/archive/2012/05/09/2490438.html 文件与文件夹操作主要用到以下几个类: 1.File类: 提供 ...