随机方法真的好骚啊O(∩_∩)O~

最早的时候miaom提出一个奇怪的东西:

判断一个数列中是否有0/1/2个数出现奇数次

对每个数赋一个随机权值,异或乱搞,对于判2的情况用一个(可能类似线性基的)方法做一下

然后我就开始瞎bb:能不能在边或点上赋一些随机权,做一些图论的判定性问题

(*^▽^*)判断无向图联通

首先考虑建一棵生成树,则任何破坏连通性的操作都需要破坏这棵树上的边

要使图不联通,肯定有一棵子树掉下来了

而子树掉下来的条件是它的根到根的父亲的边断开,且连接子树和树外点的非树边断开

这是个很好的性质,可以用来搞事情

对于树外的边都赋上一个随机权值,每个点的权值就是与之相连的非树边的权值异或和

树上边的权值是它下面的子树所有点的异或和

那么一来,一些边(恰好)切下一个子树的条件就是异或和=0

不难发现每次切下的边数很少,3237中只有4,不妨枚举所有子集,看看是否恰好切割

剩下两题有15,不妨用线性基维护,能组合出0的条件是一个数没用(扫到最后还没有被加入线性基)

没啦

made这破bzoj不兹磁time(0)还报RE,害我调了一下午

这里只贴出3569的代码(前两个没保存,直接改上去了)

 #include <bits/stdc++.h>
using namespace std;
int n,m,p,q,E,Q;
struct edge
{
int from,to;
} e[];
struct bas
{
int a[];
bool over;
bas()
{
for(int i=;i<=;i++)
a[i]=;
over=;
}
void add(int x)
{
if(over) return;
for(int i=;i>=;i--)
if(x>>i)
if(a[i]) x^=a[i];
else
{
a[i]=x;
return;
}
over=;
}
} ret;
int w[],wei[],fa[];
int nex[],fir[];
bool vis[];
void build(int now,int fat)
{
fa[now]=fat;vis[now]=;
for(int i=fir[now];i;i=nex[i])
if(!vis[e[i].to])
build(e[i].to,now);
}
int dfs(int now)
{
for(int i=fir[now];i;i=nex[i])
if(fa[e[i].to]==now)
w[now]^=dfs(e[i].to);
return w[now];
}
void add(int x,int y)
{
e[++E].from=x;e[E].to=y;nex[E]=fir[x];fir[x]=E;
e[++E].from=y;e[E].to=x;nex[E]=fir[y];fir[y]=E;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d%d",&p,&q),add(p,q);
build(,);
srand();
for(int i=;i<=E;i+=)
if(fa[e[i].from]!=e[i].to && fa[e[i].to]!=e[i].from)
{
wei[i]=rand()*+rand();
w[e[i].from]^=wei[i];
w[e[i].to]^=wei[i];
}
dfs(); for(int i=;i<=E;i+=)
if(fa[e[i].from]==e[i].to)
wei[i]=w[e[i].from];
else
if(fa[e[i].to]==e[i].from)
wei[i]=w[e[i].to]; scanf("%d",&Q);
int key=;
for(int i=;i<=Q;i++)
{
if(i==)
int e=;
scanf("%d",&p);
// p^=key;
ret=bas();
for(int j=;j<=p;j++)
scanf("%d",&q),q^=key,
ret.add(wei[q*-]);
if(!ret.over) key++;
puts(ret.over?"Disconnected":"Connected");
}
return ;
}

随机算法瞎练BZOJ3237&3563&3569三倍经验题的更多相关文章

  1. 微信红包中使用的技术:AA收款+随机算法

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

  2. POJ 3318 Matrix Multiplication(随机算法)

    题目链接 随机算法使劲水...srand((unsigned)time(0))比srand(NULL)靠谱很多,可能是更加随机. #include <cstdio> #include &l ...

  3. 抽奖随机算法的技术探讨与C#实现

    一.模拟客户需求 1.1 客户A需求:要求每次都按照下图的概率随机,数量不限,每个用户只能抽一次,抽奖结果的分布与抽奖概率近似. 1.2 客户B需求:固定奖项10个,抽奖次数不限,每个用户只能抽一次, ...

  4. hdu 4712 (随机算法)

    第一次听说随机算法,在给的n组数据间随机取两个组比较,当随机次数达到一定量时,答案就出来了. #include<stdio.h> #include<stdlib.h> #inc ...

  5. 权重随机算法的java实现

    一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...

  6. hdu 4712 Hamming Distance ( 随机算法混过了 )

    Hamming Distance Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  7. HDU4712+随机算法

    随机算法 求n个20位的2进制串的MinDist. Dist:两个串的异或结果中1的个数 /* 随机算法 */ #include<algorithm> #include<iostre ...

  8. LOJ #2540. 「PKUWC 2018」随机算法(概率dp)

    题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...

  9. java 权重随机算法实现

    import java.util.*; /** * 权重随机算法实现 * a b c d 对应权重范围 --- [0,1).[1,3).[3,6).[6,10) */ public class Ran ...

随机推荐

  1. Spring注解实现原理

    ​[Spring如何使用注解机制完成自动装配] Java实例构造时会调用默认父类无参构造方法,Spring正是利用了这一点,让"操作元素的代码"得以执行.   [两种处理策略] ( ...

  2. android自定义控件(一) 官方文档的翻译

    构建自定义组件 Android中,你的应用程序程序与View类组件有着一种固定的联系,例如按钮(Button).文本框(TextView),可编辑文本框(EditText),列表框(ListView) ...

  3. java面试题04

    1.就你所熟悉的银行业务面说一下,越详细越好 银行经验:手机银行  网上银行经验  怎么支付  转账  了解基本业务 2.了解工作流的控制,审批流程以及帐务处理么? java中怎么实现工作流.审批流程 ...

  4. MySQL_杭州11月1-29号在线产品在线天数、销售天数_20161129

    杭州11月1-29号在线产品在线天数.销售天数 1.产品在这个时间段内的每一天的在线情况,然后聚合计算每个产品的在线天数,每一天的在线情况 如果在线记为1,不在线为null 2.计算每个产品在这个时间 ...

  5. VijosP1112:小胖的奇偶

    描述 huyichen和xuzhenyi在玩一个游戏:他写一个由0和1组成的序列. huyichen选其中的一段(比如第3位到第5位),问他这段里面有奇数个1还是偶数个1.xuzhenyi回答你的问题 ...

  6. 五 python 发送邮件

    需求: 系统中使用一个邮箱(这里用QQ)给其他邮箱发消息,用python完成,步骤如下: 1: 开启QQ邮箱的SMTP服务.设置-> 账号 2: 开启邮箱服务:这个需要手机验证,最后会给你一个授 ...

  7. Selenium实战脚本集—新浪微博发送QQ每日焦点

    Selenium实战脚本集-新浪微博发送QQ每日焦点 http://www.spasvo.com/ceshi/open/kygncsgj/Selenium/201549150822.html 背景 很 ...

  8. 用c++STL实现进程管理

    项目要求: 设计一个允许n个进程并发运行的进程管理模拟系统.该系统包括有简单的进程控制,其进程调度采用时间片轮转算法.每个进程用一个PCB表示,其内容根据具体情况设置.各进程之间有一定的同步关系(可选 ...

  9. EF中外键重命名,打破原先的约束规则

    本人建议玩code frist的人多用用System.ComponentModel.DataAnnotations和System.ComponentModel.DataAnnotations.Sche ...

  10. Flask RESTful API搭建笔记

    之前半年时间,来到项目的时候,已经有一些东西,大致就是IIS+MYSQL+PHP. 所以接着做,修修补补,Android/iOS与服务器数据库交换用PHP, Web那边则是JS+PHP,也没有前后端之 ...