bzoj3811 uoj36 玛里苟斯
做题前问了一下miaom,得到了一个奇怪的回答

mmp
这题分类讨论
k=1sb题
k=2按位计算,把每个数看成几个2的幂次的和,按位跑期望
k>2线性基sb题
没了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 100005
#define M 75
#define ll unsigned long long
using namespace std; int n,flag; ll ans,res,mod,bin[M],a[N],base[M]; bool f[M][M];
void calc(){
int i,j;
for (i=; i<=n; i++)
for (j=; j>=; j--) if (a[i]&bin[j])
if (!base[j]){
base[j]=a[i]; break;
} else a[i]^=base[j];
for (j=n=; j<; j++) if (base[j]) a[++n]=base[j];
}
void solve1(){
int i,j,k,t;
for (i=; i<; i++)
for (j=; j<=n; j++) f[i][j]=(a[j]&bin[i])?:;
for (i=; i<; i++)
for (j=; j<; j++){
for (k=; k<=n; k++) if (f[i][k]) break;
if (k>n) continue;
for (k=; k<=n; k++) if (f[j][k]) break;
if (k>n) continue;
t=;
for (k=; k<=n && !t; k++)
if (f[i][k]!=f[j][k]) t=;
if (i+j--t<) res++; else ans+=bin[i+j--t];
ans+=res>>; res&=;
}
printf("%llu",ans); puts(res?".5":"");
}
void dfs(int k,ll now){
if (k>n){
int i; ll u=,v=;
for (i=; i<=flag; i++){
u*=now; v*=now;
u+=v>>n; v&=mod;
}
ans+=u; res+=v;
ans+=res>>n; res&=mod;
return;
}
dfs(k+,now); dfs(k+,now^a[k]);
}
void solve2(){
mod=bin[n]-; dfs(,);
printf("%llu",ans); puts(res?".5":"");
}
int main(){
scanf("%d%d",&n,&flag); int i;
bin[]=; for (i=; i<; i++) bin[i]=bin[i-]<<;
for (i=; i<=n; i++) scanf("%llu",&a[i]);
if (flag==){
for (i=; i<=n; i++) ans|=a[i];
printf("%llu",ans>>); puts((ans&)?".5":"");
return ;
}
calc();
if (flag==) solve1(); else solve2();
return ;
}
bzoj3811 uoj36 玛里苟斯的更多相关文章
- 【BZOJ3811】玛里苟斯(线性基)
[BZOJ3811]玛里苟斯(线性基) 题面 BZOJ 题解 \(K=1\)很容易吧,拆位考虑贡献,所有存在的位出现的概率都是\(0.5\),所以答案就是所有数或起来的结果除二. \(K=2\)的情况 ...
- 【BZOJ3811/UOJ36】 玛里苟斯
Description 魔法之龙玛里苟斯最近在为加基森拍卖师的削弱而感到伤心,于是他想了一道数学题. S 是一个可重集合,S={a1,a2,…,an}. 等概率随机取 S 的一个子集 A={ai1,… ...
- #YCB#待做题目与填坑资料
各种填坑资料(qwq) 主席树(by YL)戳 树套树(by ZSY)戳 不要问我这些题咋来的(查大佬的水表呗) 题目列表: [HDU5977]Garden of Eden [BZOJ2752][HA ...
- 【bzoj3811】【清华集训2014】玛里苟斯
3811: 玛里苟斯 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 500 Solved: 196[Submit][Status][Discuss] ...
- BZOJ3811 玛里苟斯(线性基+概率期望)
k=1的话非常好做,每个有1的位都有一半可能性提供贡献.由组合数的一些性质非常容易证明. k=2的话,平方的式子展开可以发现要计算的是每一对位提供的贡献,于是需要计算每一对位被同时选中的概率.找出所有 ...
- bzoj3811 玛里苟斯
分三种情况讨论 k=1时,对于每一位而言,只要有一个数这一位是1,那么这个就有0.5的概率是1,选他就是1,不选就是0,有第二个的话,在第一个选或不选的前提下,也各有0.5的几率选或不选,0和1的概率 ...
- UOJ#36. 【清华集训2014】玛里苟斯 线性基
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ36.html 题解 按照 $k$ 分类讨论: k=1 : 我们考虑每一位的贡献.若有至少一个数第 $i$ ...
- bzoj 3811: 玛里苟斯
3811: 玛里苟斯 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 190 Solved: 95[Submit][Status][Discuss] ...
- uoj 36 玛里苟斯
[清华集训2014]玛里苟斯 - 题目 - Universal Online Judge k=1,2,3,4,5各占20pts是提示 应当分开考虑 k=1 拆位,如果第i位有1,则有1/2的概率xor ...
随机推荐
- ultraedit激活
使用期满的解决办法:https://blog.csdn.net/dfh00l/article/details/52093630 下载:https://blog.csdn.net/qq_16093323 ...
- 检测UTF-8编码
在PHP检测字符串是否是UTF-8编码的时候,很多人在使用mb_detect_encoding的时候,经常遇到检测不准的问题,下面的方法可以准确检测编码是否是UTF-8 function check_ ...
- 网络编程学习笔记-linux常用的网络命令
网络参数设置命令 所有时刻如果你想要做好自己的网络参数设置,包括IP参数.路由参数和无线网络等,就得要了解下面这些相关的命令才行.其中Route及ip这两条命令是比较重要的.当然,比较早期的用法,我们 ...
- C#如何把XSD中HexBinary类型序列化uint类型
xml schema中有hexBinary类型, 我们在实现C#的Serialization时,一般默认把hexBinary映射为byte[],但是有些情况我们需要把 hexBinary映射为uint ...
- 《TCP/IP详解卷一:协议》数据链路层(一)
版权声明:本文为博主原创文章,转载请标注转载链接,谢谢. 目录(?)[+] 引言 在TCP/IP协议族中,链路层主要有三个目的: 为IP模块发送和接收IP数据报. 为ARP模块 ...
- CentOS虚拟机通过主机网络上网
0 环境简介 环境如下: (1)宿主机为WIN7系统,连接内网,同时通过网关服务器上外网: (2)虚拟机为VMWare12下的CentOS7系统. 宿主机通过WIFI方式上外网的配置方法,参考本人另一 ...
- 异常:Error: Aesthetics must either be length one, or the same length as the dataProblems:AData
今天遇到一个异常,代码如下: set.seed(12345) require(ggplot2) AData <- data.frame(Glabel=LETTERS[1:7], A=rnorm( ...
- linux svn 客户端基本使用命令
1.从svn获取项目 svn co URL --username XX --password XX; 2.添加code file svn add codeFile; svn ci -m "c ...
- SRAM SROM DRAM DROM DDR NAND FLASH EMMC的区别
RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的.它在任何 时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存 ...
- SSM之全局异常处理器
1. 异常处理思路 首先来看一下在springmvc中,异常处理的思路: 如上图所示,系统的dao.service.controller出现异常都通过throws Exception向上抛出,最后 ...