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 ...
随机推荐
- .NET中Eval()方法大全
<%# Bind("Subject") %> //绑定字段<%# Container.DataItemIndex + 1%> //实现自动编号<%# ...
- IDEA编译less插件LESS CSS Compiler的安装
1.IDEA插件地址:LESS CSS Compiler 百度云盘下载地址 2.安装Node.js,下载 3.打开idea→settings→plugins 安装:“nodejs”插件,并按以下步骤进 ...
- COM中[int],[out],[out,retval]的含义
COM中在声明函数中通常会这样: HRESULT getName([in]int ID,[out,retval]*BSTR name) 实现函数时,这样: STDMETHODIMP Person::g ...
- linux进程学习-进程描述符的存储
当进程被新建时,内核会给进程分配一个8K的空间作为进程的内核堆栈.同时我们知道task_struct结构体也会被创建,但有意思的是,内核不会给task_struct单独分别空间,而是直接将其扔到8k的 ...
- PHP读取xml方法介绍
一,什么是xml,xml有什么用途 XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Marku ...
- 【LeetCode】046. Permutations
题目: Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] ha ...
- dataguard 下主备 online redo 与 standby redo log resize 重建
环境说明: 本实验环境是一个节点的rac + 单节点 asm dg database 与 grid 版本是 11.2.0.4 .提别提醒 如果是多节点集群,操作时需要特别注意 thread . ...
- Mysql 创建存储过程 更新表
DELIMITER // use protocoldb// drop procedure if exists sp_protocol_Update// create procedure sp_prot ...
- 异常: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( ...
- 在浏览器端用JS创建和下载文件
前端很多项目中,都有文件下载的需求,特别是JS生成文件内容,然后让浏览器执行下载操作(例如在线图片编辑.在线代码编辑.iPresst等). 但受限于浏览器,很多情况下我们都只能给出个链接,让用户点击打 ...