玛里苟斯[清华集训2014 Day1]

魔法之龙玛里苟斯最近在为加基森拍卖师的削弱而感到伤心,于是他想了一道数学题。

S 是一个可重集合,S={a1,a2,…,an}。

等概率随机取 S 的一个子集 A={ai1,…,aim}。

计算出 A 中所有元素异或 x, 求 xk 的期望。

SOL :

这题目太色情了。没打高精度炸的不要不要的。

我们观察一波局势,发现当K=1时我们可以按位异或,我们可以证明,若 S集合中存在X 在 i位是1,那么这一位上出现1的期望就是0.5.

证明如下,我们把每一位上的ai的值取出来,那么我们发现0对答案没有贡献。设我们有X个1,而我们取偶数个1的期望为 signma C(2i+1,x)=((1+1)^n+(1-1) ^ n)/2;

而总数为2^n,那么我们的期望就是0.5.

所以我们统计每一位上是否有1,最后累加除2.

K=2:我们依旧统计每一位上是否有1.

我们发现我们得到每一位上有1的位对答案

∑j=0m∑p=0m(∑2ni=1bi,j⋅bi,p2n⋅2j+p)

我们就可以将其答案统计出来。

K>2 我们惊奇的发现,对S其进行求线性基其答案不变。我们发现K>2时由于答案在LongLong范围内,我们可以保证求出得基最多22个,

暴力统计答案即可。

#pragma optimize("-O2")
#include<bits/stdc++.h>
#define sight(c) ('0'<=c&&c<='9')
#define LL unsigned long long
#define N 100009
#define db long double
const LL mo=(1<<25)-1;
using namespace std;
struct NL{LL a,b;NL() {a=b=0;}NL(LL x,LL y):a(x),b(y){}inline NL operator ^(const NL &A)const &{return NL(A.a^a,A.b^b);}inline NL operator ^(const LL &A)const &{return NL(a,A^b);}inline NL operator +(const NL &A)const &{NL T;T.a=A.a+a; T.b=A.b+b;if (T.b>mo) T.a+=T.b>>25,T.b&=mo;return T;}inline NL operator +(const LL &A)const &{NL T; T.a=a; T.b=A+b;if (T.b>mo) T.a+=T.b>>25,T.b&=mo;return T;}inline NL operator *(const NL &A)const &{NL T;T.a=(A.a*a<<25)+A.a*b+A.b*a; T.b=A.b*b;if (T.b>mo) T.a+=T.b>>25,T.b&=mo;return T;}inline NL operator *(const LL &A)const &{NL T;T.a=a*A; T.b=A*b;if (T.b>mo) T.a+=T.b>>25,T.b&=mo;return T;}inline LL ok(int x){LL T=b&(1ll<<x)-1;b>>=x; b|=(a&(1ll<<x)-1)<<(25-x);a>>=x;return T;}
};
inline void read(LL &x){static char c;for (c=getchar();!sight(c);c=getchar());for (x=0;sight(c);c=getchar()) x=x*10+c-48;
}
void write(LL x) {if (x<10) { putchar('0'+x); return;} write(x/10); putchar('0'+x%10);
}
inline void writeln(LL x) {if (x<0) putchar('-'),x*=-1; write(x); putchar('\n');
}
LL n,k,ans,X,A[N],P[65],r,OT[65],O;
NL Ans;
void Guass()
{for (int i=1;i<=n;i++)for (int j=62;~j;j--)if ((A[i]>>j)&1) if (!P[j]) {P[j]=A[i]; break;} else A[i]^=P[j];for (int j=0;j<=62;j++) if (P[j]) OT[r++]=P[j];
}
int b[79];
inline NL pow(NL x,int k){NL anw=NL(0,1);for (;k;k>>=1,x=x*x)if (k&1) anw=anw*x;return anw;
}
void dfs(NL x,int t){if (!(t^r)) { Ans=Ans+pow(x,k); return;} dfs(x^OT[t],t+1);  dfs(x,t+1);
}
int main () {    freopen("malygos.in","r",stdin);freopen("malygos.out","w",stdout);read(n); read(k);for (int i=1;i<=n;i++) {read(A[i]); for (int j=0;j<=63;j++) b[j]|=(A[i]>>j)&1;}if (k==1) {for (int j=63;~j;j--) if (b[j]) ans+=1ll<<j; write(ans>>1); if (ans&1) puts(".5\n"); return 0;}if (k==2) {for (int j=31;~j;j--) if (b[j]) Ans=Ans+(1ull<<2*j+1);for (int i=31;~i;i--) {for (int j=0;j<i;j++) {int c[4]={};for (int k=1;k<=n;k++)  c[(A[k]>>i&1)<<1|(A[k]>>j&1)]=1;for (int k=0;k<4;k++) for (int ii=0;ii<4;ii++) for (int jj=0;jj<4;jj++) if (c[ii]&&c[jj])  c[ii^jj] = 1;int s=0;for (int k=0;k<4;k++) s+=c[k];if (c[3])     Ans=Ans+((LL)(8/s)*(1ULL<<i+j));}}LL g=Ans.ok(2);LL T=(Ans.a<<25)+Ans.b;write(T);LL MM=1<<2;if (g) {putchar('.');while (g) {g*=10; putchar('0'+g/MM); g%=MM;}}return 0;}Guass();dfs(NL(0,0),0);LL g=Ans.ok(r);LL T=(Ans.a<<25)+Ans.b;write(T);LL MM=1<<r;if (g) {putchar('.');while (g) {g*=10; putchar('0'+g/MM); g%=MM;}}return 0;
}

转载于:https://www.cnblogs.com/rrsb/p/8260454.html

玛里苟斯[清华集训2014 Day1]相关推荐

  1. 清华集训2014 day1 task1 玛里苟斯

    题目 这可算是描述很简单的一道题了!但是不简单. \(S\)是一个可重集合,\(S = \{a_1, a_2, \dots, a_n \}\). 等概率随机取\(S\)的一个子集\(A = \{a_{ ...

  2. 清华集训2014 玛里苟斯

    清华集训2014 玛里苟斯 求子集异或和k次方的期望. 异或考虑按位算贡献. 对于\(K=1\),考虑异或和\(\frac{x}{2}\)就是答案. 证明简单来说就是,你可以先打一个概率\(dp\)分 ...

  3. 【清华集训 2014】玛里苟斯(组合计数 + 线性基)

    题目链接:[清华集训 2014]玛里苟斯 推荐博客:[BZOJ 3811]玛里苟斯:线性基(详细证明) 首先想到将kkk分类讨论. k=1" role="presentation& ...

  4. 【清华集训2014】Sum)(类欧几里得算法)

    [清华集训2014]Sum 然后本质上我们需要求解的就是那个带根号式子的奇偶性,然后我们发现这个式子很像是类欧几里得算法,求解一个斜率为无理数直线下的整点个数,然后我们直接对于一般形式求解,那么就是每 ...

  5. 【清华集训2014】【BZOJ3811】玛里苟斯

    Description 魔法之龙玛里苟斯最近在为加基森拍卖师的削弱而感到伤心,于是他想了一道数学题. S 是一个可重集合,S={a1,a2,-,an}. 等概率随机取 S 的一个子集 A={ai1,- ...

  6. [UOJ]#36. 【清华集训2014】玛里苟斯 线性基+分类讨论

    题意: 魔法之龙玛里苟斯最近在为加基森拍卖师的削弱而感到伤心,于是他想了一道数学题. SSS 是一个可重集合,S=a1,a2,-,anS={a1,a2,-,an}S=a1,a2,-,an. 等概率随机 ...

  7. [清华集训2014]玛里苟斯

    一.题目 点此看题 二.解法 注意到答案是2632^{63}263次方,可以分kkk来讨论: k=1k=1k=1,求出所有值或起来的值,每一位有12\frac{1}{2}21​的概率有贡献,所以把这个 ...

  8. 【清华集训2014】玛里苟斯

    看到这道题,然后便错误地联想到了数位DP什么的--接着发现了答案在一个界内,然后就想着暴力了. 首先如果对每一位都设一个变量的话,根据插板法,最多只能有1e7个项对答案有贡献,和答案在一个界内这个条件 ...

  9. 【清华集训2014】玛里苟斯(数学 线性基)

    original link - http://uoj.ac/problem/36 题意: 有一个多重集S={a1,a2,...an}S=\{a_1,a_2,...a_n\}S={a1​,a2​,... ...

最新文章

  1. 概说《TCP/IP详解 卷2》缘起
  2. Python:每日一题002
  3. 蚂蚁海图切片工具linux版本,Web海图服务软件 - 海图在线
  4. random_shuffle 和transform算法
  5. 个人管理 - 书籍推荐(待读)
  6. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-代码解析...
  7. 用实力给自己正名,YOLOv5:道路损伤检测我最强!GRDDC'2020大赛报告
  8. Bootstrap 表单
  9. 【2021Java最新学习路线】java前端开发
  10. python机器学习库sklearn——K最近邻、K最近邻分类、K最近邻回归
  11. 做了一天的程序,很困啊,明天还要赶着去上课
  12. Python爬取网易云音乐评论
  13. C#翻译mobile-detect.js源码实现手机平台检测
  14. 高端存储技术与应用趋势
  15. AntD Pro v5记录-布局
  16. 当实现两个Activity之间的跳转时,发生 XXX has stoped 或者 XXX keeps stopping
  17. 管理安装软件包yum什么是yum
  18. (入门)前端开发的简单介绍
  19. 航空模型手工制作_小学生的简易航空模型地制作
  20. 模式识别作业2——SYSU

热门文章

  1. Surface pro 4 使用心得
  2. 无线通讯 cmt2150A 简介 1527协议
  3. 看我小穷仔和富家MM的经典图聊!!
  4. android list sort 并删除重复点_阿博的Python之路-详解List数据类型
  5. A Comprehensive Survey on Graph Neural Networks(图神经网络综合研究)
  6. pip 因为网络问题而导致安装库失败
  7. linux中出现不在 sudoers 文件中。此事将被报告的解决方法
  8. CSU 1803:2016解题报告
  9. 电子商务竞争加速:顺丰速运及天极均推B2C平台
  10. GE CimplicityV11.1安装步骤