bzoj 3811: 玛里苟斯【线性基+期望dp】
这个输出可是有点恶心啊……WA*inf,最后抄了别人的输出方法orz
还有注意会爆long long,要开unsigned long long
对于k1,单独考虑每一位i,如果这一位为1则有0.5的概率贡献1<<i,否则没有贡献,因为这一位选了奇数偶数个1的概率是一样的
对于k2,考虑乘法的意义,也就是i位和j位同时为1的概率p,贡献(1<<(i+j))*p,这个p,如果全部的a[k]都是在i位和j为相同则是p=0.5(因为这样一来ij的值就关联了),否则p=0.25
对于剩下的,建线性基后最多有21个元素,直接枚举所有状态即可
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N=100005;
unsigned long long n,m,k,a[N],b[65],tot,ans,res;
unsigned long long read()
{
unsigned long long r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
void ins(unsigned long long x)
{
for(int i=63;i>=0;i--)
if(x>>i)
{
if(!b[i])
{
b[i]=x;
return;
}
x^=b[i];
}
}
int main()
{
n=read(),k=read();
for(int i=1;i<=n;i++)
a[i]=read();
if(k==1)
{
for(int i=1;i<=n;i++)
ans|=a[i];
printf("%llu",ans>>1),puts((ans&1)?".5":"");
return 0;
}
if(k==2)
{
unsigned s=0;
for(int i=1;i<=n;i++)
s|=a[i];
for(int i=0;i<32;i++)
for(int j=0,fl=0;j<32;++j,fl=0)
if((s>>i&1)&&(s>>j&1))
{
for(int k=1;k<=n;k++)
if((a[k]>>i&1)^(a[k]>>j&1))
{
fl=1;
break;
}
if(i+j-1-fl<0)
++res;
else ans+=1llu<<(i+j-1-fl);
}
ans+=res>>1;
printf("%llu",ans),puts((res&1)?".5":"");
return 0;
}
unsigned long long ans=0;
for(int i=1;i<=n;i++)
ins(a[i]);
// for(int i=0;i<=20;i++)
// cerr<<b[i]<<" ";cerr<<endl;
for(m=22;!b[m];m--);
m++;
for(int s=0,len=(1<<m);s<len;s++)
{
unsigned long long sm=0,r=1;
for(int i=0;i<m;i++)
if(s&(1<<i))
sm^=b[i];
for(int i=1;i<k;i++)
r*=sm;
if(r<len)
{
r*=sm,tot+=r;
if(tot>=len)
ans+=tot/len,tot%=len;
}
else
{
ans+=r/len*sm,r%=len,r*=sm,tot+=r;
if(tot>=len)
ans+=tot/len,tot%=len;
}
}
printf("%llu",ans),puts(tot?".5":"");
return 0;
}
bzoj 3811: 玛里苟斯【线性基+期望dp】的更多相关文章
- BZOJ.3811.玛里苟斯(线性基)
BZOJ UOJ 感觉网上大部分题解对我这种数学基础差的人来说十分不友好...(虽然理解后也觉得没有那么难) 结合两篇写的比较好的详细写一写.如果有错要指出啊QAQ https://blog.csdn ...
- 【做题】CF388D. Fox and Perfect Sets——线性基&数位dp
原文链接https://www.cnblogs.com/cly-none/p/9711279.html 题意:求有多少个非空集合\(S \subset N\)满足,\(\forall a,b \in ...
- BZOJ CF388D. Fox and Perfect Sets [线性基 数位DP]
CF388D. Fox and Perfect Sets 题意:求最大元素\(le n\)的线性空间的个数 给神题跪了 orz 容易想到 每个线性基对应唯一的线性空间,我们可以统计满足条件的对应空间不 ...
- bzoj 3811: 玛里苟斯
3811: 玛里苟斯 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 190 Solved: 95[Submit][Status][Discuss] ...
- UOJ#36. 【清华集训2014】玛里苟斯 线性基
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ36.html 题解 按照 $k$ 分类讨论: k=1 : 我们考虑每一位的贡献.若有至少一个数第 $i$ ...
- bzoj 2115 Xor - 线性基 - 贪心
题目传送门 这是个通往vjudge的虫洞 这是个通往bzoj的虫洞 题目大意 问点$1$到点$n$的最大异或路径. 因为重复走一条边后,它的贡献会被消去.所以这条路径中有贡献的边可以看成是一条$1$到 ...
- 【BZOJ】2134: 单选错位 期望DP
[题意]有n道题,第i道题有ai个选项.把第i道题的正确答案填到第i+1道题上(n填到1),问期望做对几道题.n<=10^7. [算法]期望DP [题解]正确答案的随机分布不受某道题填到后面是否 ...
- Codeforces 1299D - Around the World(线性基+图论+dp)
Codeforces 题目传送门 & 洛谷题目传送门 一道线性基的综合题 %%%%%% 首先注意到"非简单路径""异或和"等字眼,可以本能地想到线性基. ...
- [清华集训2015 Day1]玛里苟斯-[线性基]
Description Solution 考虑k=1的情况.假设所有数中,第i位为1的数的个数为x,则最后所有的子集异或结果中,第i位为1的个数为$(C_{k}^{1}+C_{k}^{3}+...)$ ...
随机推荐
- BAT&注册表重定向劫持
RunJS 常用引导,有时启动某个应用需要环境变量可以这样启动应用,会对启动的进程生效,即被继承 set PATH=D:\Developer\sdk\platform-tools;%PATH% D: ...
- @SuppressWarnings 用法
从Java 5.0起,您可以使用java.lang.SuppressWarning注释,来停用与编译单元子集相关的编译警告 作用:用于抑制编译器产生警告信息. Idea 设置泛型检查,变量.方法未使用 ...
- 李洪强iOS开发之-入门指南
李洪强iOS开发之-入门指南 1零基础小白如何进行iOS系统学习 首先,学习目标要明确:其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走:再次,学技术最重 ...
- 网页Html代码优化及分析
- __sizeof__()
https://bugs.python.org/issue2898 https://bugs.python.org/file10353/footprint.patch Index: Python/sy ...
- js中!~什么意思
(function () { var names = []; return function (name) { addName(name); } function addName(name) { if ...
- HTTP协议六种请求方法,get,head,put,delete,post有什么区别
标准Http协议支持六种请求方法,即: 1.GET 2.POST 3.PUT 4.Delete 5.HEAD 6.Options 但其实我们大部分情况下只用到了GET和POST.如果想设计一个符合RE ...
- spring-jar包详解整理(大合集)
转:https://blog.csdn.net/weisong530624687/article/details/50888094 spring.jar 是包含有完整发布模块的单个jar 包.但是不包 ...
- @Data 注解在实体类的使用可省去生成GET,SET方法
你有没有觉得在每个实体类中都要生成get,set方法很麻烦, 要是需求的变化,需要再加一个字段,添加属性后则又要添加其get,set方法 现有一个很好用的注解能解决这个麻烦 1,idea中装上 lom ...
- poj 2531 Network Saboteur 解题报告
题目链接:http://poj.org/problem?id=2531 题目意思:将 n 个点分成两个部分A和B(也就是两个子集啦), 使得子集和最大(一定很难理解吧,呵呵).举个例子吧,对于样例,最 ...