清华集训2014 day1 task1 玛里苟斯
题目
这可算是描述很简单的一道题了!但是不简单。
\(S\)是一个可重集合,\(S = \{a_1, a_2, \dots, a_n \}\)。
等概率随机取\(S\)的一个子集\(A = \{a_{i_1}, \dots, a_{i_m}\}\)。
计算出\(A\)中所有元素异或\(x\), 求\(x^k\)的期望。
要点
要点 1
所有异或出来的不同结果的数量是同样多的(这句话可能有点不清楚)。
我的意思是说,假如异或出来的结果有\(5\)、\(3\)、\(4\),那么结果是\(5\)的异或方案数量是等于结果是\(3\)的异或方案数量的,也是等于结果是\(4\)的异或方案数量的。
除此之外,如果
设异或结果为\(0\)的子集(包括空集)数量为\(n\),那么如果异或出来的结果有\(x\),那么一定恰好有\(n\)种方案使得异或出来的结果是\(x\)。
要点 2 \(a_i\)的大小
设其大小为\(2^m-1\),说白了就是化成二进制后有多少位。
那么\[(2^m-1)^k \leqslant answer < 2^{63}\]
即\[2^{mk} \leqslant 2^{63}\]
就是\[m \leqslant \frac {63} {k}\]
算法
算法 1
根据要点1,很容易想到高斯消元。消元后直接暴力即可,不过这个时间复杂度是 \(O(2^m)\)。只能通过\(60 \%\)的数据。
算法 2
设\(P = \lbrace a_1, a_2, \dots, a_{2^n} \rbrace\),它的元素就是\(A\)中所有元素异或,所以它的大小为\(2^n\)。
那么答案为\[\frac {\sum_{i=1}^{2^n} {{a_i}^k}} {2^n}\]
由于\(a_i\)化成二进制后位数比较少,所以用\(b_{i,j}\)表示\(a_i\)化成二进制后的第\(j\)位。
那么答案可以写成\[\frac {\sum_{i=1}^{2^n} ({{\sum_{j=0}^{m} { b_{i,j} \cdot 2^j }}})^k} {2^n}\]
现在假设\(k=2\),有:\[\frac {\sum_{i=1}^{2^n} ({{\sum_{j=0}^{m} \sum_{p=0}^{m} {} { b_{i,j} \cdot b_{i,p} \cdot 2^{j+p} }}})} {2^n}\]
也就是:\[\sum_{j=0}^{m} \sum_{p=0}^{m}( \frac {\sum_{i=1}^{2^n} { b_{i,j} \cdot b_{i,p} }} {2^n}\cdot 2^{j+p})\]
对于\(\frac {\sum_{i=1}^{2^n} { b_{i,j} \cdot b_{i,p} }} {2^n}\),是可以在\(O(n)\)的时间复杂度内算出来的!如果\(j=p\),那么这个值为第\(j\)为\(1\)的概率,如果\(j\neq p\),那么这个值为第\(j\)和第\(p\)同时为\(1\)的概率,这个用一个迭代可以算出(根据要点1,算出最终所有可能出现的异或结果,这里的异或结果是指第\(j\)位和第\(p\),只有4种结果)。
当\(k \neq 2\)时,原理一样!
这样子,我们就可以在\(O(m^k \cdot (n + (2^k)^3))\)内算出\(answer\)了。
| k | m | 总复杂度(估算) |
|---|---|---|
| 1 | 63 | 63 |
| 2 | 31 | 61504 |
| 3 | 21 | 4741632 |
| 4 | 15 | 207360000 |
| 5 | 12 | 8153726976 |
好吧,你会发现迭代的时间复杂度有点高!事实上可以利用高斯消元后的独立数进行推导同时出现\(1\)的概率。
这样的话,时间复杂度就是\(O(m^k \cdot m)\)了。
清华集训2014 day1 task1 玛里苟斯的更多相关文章
- 清华集训2014 day2 task1 简单回路
题目 如题. 算法 就是刚学习的插头DP. 从前往后和从后往前分别进行一次DP. 要点 合法的括号序列只有103个 如何合并两次dp的信息 一开始犯傻了,以为当且仅当两个轮廓线的状态相同才是合法的方案 ...
- 清华集训2014 day1 task2 主旋律
题目 这可算是一道非常好的关于容斥原理的题了. 算法 好吧,这题我毫无思路,直接给正解. 首先,问题的正面不容易求,那么就求反面吧: 有多少种添加边的方案,使得这个图是DAG图(这里及以下所说的DAG ...
- 清华集训2014 day1 task3 奇数国
题目 题目看起来好像很难的样子!其实不然,这是最简单的一道题. 算法 首先要注意的是: \(number \cdot x + product \cdot y = 1\) ,那么我们称\(number\ ...
- uoj 41 【清华集训2014】矩阵变换 婚姻稳定问题
[清华集训2014]矩阵变换 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/41 Description 给出 ...
- AC日记——【清华集训2014】奇数国 uoj 38
#38. [清华集训2014]奇数国 思路: 题目中的number与product不想冲: 即为number与product互素: 所以,求phi(product)即可: 除一个数等同于在模的意义下乘 ...
- UOJ#46. 【清华集训2014】玄学
传送门 分析 清华集训真的不是人做的啊嘤嘤嘤 我们可以考虑按操作时间把每个操作存进线段树里 如果现在点x正好使一个整块区间的右端点则更新代表这个区间的点 我们不难发现一个区间会因为不同的操作被分成若干 ...
- 清华集训2014 sum
清华集训2014sum 求\[∑_{i=1}^{n}(-1)^{⌊i√r⌋}\] 多组询问,\(n\leq 10^9,t\leq 10^4, r\leq 10^4\). 吼题解啊 具体已经讲得很详细了 ...
- 【bzoj3811】【清华集训2014】玛里苟斯
3811: 玛里苟斯 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 500 Solved: 196[Submit][Status][Discuss] ...
- [UOJ]#36. 【清华集训2014】玛里苟斯
题目大意:给n个数字,求子集的异或和的k次方的期望(n<=10^5,k<=5,保证答案小于2^63) 做法:首先如果从集合中拿出a和b,把a和a xor b放回集合,子集的异或和与原来是一 ...
随机推荐
- excel条型图示例
不怎么用这个功能,今天同事问我,研究了半天,有的地方还是有糊涂的地方,网上,书上都介绍的比较少.比如一张表里没有数据内容时,形成表时会有问题.但形成表后,再删除单元格数据,表却没有问题. 有点矛盾.
- jquery 上下滑动效果
<script type="text/javascript"> var myar = setInterval('AutoScroll(".li_gundong ...
- ibatis缓存配置
一.sqlmapconfig.xml <sqlMapConfig> <settings useStatementNamespaces="true" cacheM ...
- .NET中DLL“没有可放置在工具箱的组件”—FreeTextBox
主要针对在VS2012.VS2013的工具箱中,通过“选择项”添加自定义的Dll,如.NET类型时,出现“没有可放置在工具箱的组件”问题的常见解决方案.例如在线编辑工具:FreeTextBox 解决方 ...
- git 使用详情
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- perl学习(1) 入门
Perl 被设计成90%擅长处理文本,10%处理其余的问题.因此Perl 有强大的文本处理能力,包括正则表达式. 第一个程序 hello world #! /usr/bin/perl -w use s ...
- CSS中border-style的属性
属性可能的值 值 描述 none 定义无边框. hidden 与 "none" 相同.不过应用于表时除外,对于表,hidden 用于解决边框冲突. dotted 定义点状边框.在大 ...
- C# lazy<T>的用法
.NET 4.0中加入了lazy<T>(懒对象),其实叫懒对象感觉不对,更应该叫延迟对象加载. 正如我们所知,对象的加载是需要消耗时间的,特别是对于大对象来说消耗的时间更多.lazy可以实 ...
- linux中/etc与/var目录,各是什么意思?这两个目录下的文件有什么特点?
http://zhidao.baidu.com/link?url=DkxU9CyhJb_dIUAPCmPmxRtQsENgCzqy5qnLPEj_V9DqNzdt6Qya0U5iCVRCYFkgoRo ...
- BZOJ 1458: 士兵占领( 网络流 )
先判无解 把整个棋盘都放上士兵, 只需求最多可以拿走多少个士兵即可.每一行看做一个点r(i), 每一列看做一个点c(i) S->r(i), c(i)->T 连边, 容量为可以拿走的最大士兵 ...