题目描述

小w隐藏的心绪已经难以再隐藏下去了。小w有n+ 1(保证n为偶数)个心绪,每个都包含了[1,2n]的一个大小为n的子集。现在他要找到隐藏的任意两个心绪,使得他们的交大于等于n/2。

输入描述

一行一个整数n。接下来每行一个长度为k的字符串,该字符串是一个64进制表示,ASCII码为x的字符代表着x-33,所有字符在33到33+63之间。转为二进制表示有6k位,它的前2n个字符就是读入的集合,第i位为1表示这个集合包含i,为0表示不包含。

输出描述

一行两个不同的整数表示两个集合的编号。如果无解输出“NO Solution”。

样例输入

10
  EVK#
  IH=#
  676"
  R7,#
  74S"
  6V2#
  O3J#
  S-7$
  NU5"
  C[$$
  3N.#

样例输出

1 2

对于20%的数据满足n≤100。
  对于50%的数据满足n≤1×103
  对于100%的数据满足n≤6×103

分析

我觉得应该没有人会想到暴力即是正解

首先先看一眼数据规模,好像用int存字符串会炸内存,于是考虑用bitset

不然就像我一样爆零

然后就可以暴力地O(n3/32)地做啦

我们来验证一下它的正确性

任选出两个子集,考虑每个元素在两个子集中共有的概率,加起来就是期望共有的个数

由于总共有2n个元素,每个子集有n个元素,那么一个元素在子集内的概率就是$\frac 1 2$,

那么一个元素同时在两个子集内的概率就是$\frac 1 4$

所以任选两个子集期望的共有的个数是$\frac 1 4 \times 2n=\frac n 2$

当然,这个期望值是建立在数据纯随机的情况下的

我们接下来可以求一下在出题人控制了数据的情况下我们任选两个子集,子集的共有元素的期望个数

假设第i号元素有Si个子集拥有,那么对于i号元素就有$C_{Si}^2$种情况任选两个子集都包含i号元素,而任选两个子集的情况总数为$C_{n+1}^{2}$

所以对于i号元素,任选两个子集都包含它的概率为

$$\frac {C_{Si}^2}  {C_{n+1}^2}$$

任选两个子集的期望共有元素个数为

$$\sum_{i=1}^{2n} \frac {C_{Si}^2} {C_{n+1}^2}$$

显然出题人可以控制每个Si的大小来卡我们,但他无法控制其它数的大小。

我们只要求出这个东西的最小值就可以知道出题人是否能卡我们

而且我们还知道

$$\sum_{i=1}^{2n} Si=n(n+1)$$

所以我们化简一下这个式子

$$\sum_{i=1}^{2n} \frac {C_{Si}^2} {C_{n+1}^2}$$

$$=\frac { \sum_{i=1}^{2n} {C_{Si}^2} } {C_{n+1}^2}$$

$$=\frac {\sum_{i=1}^{2n} { \frac {Si \times (Si-1) } {2} } } { \frac {n \times (n+1)} {2} }$$

$$=\frac {\sum_{i=1}^{2n} {Si \times (Si-1)}} {n \times (n+1)}$$

$$=\frac {\sum_{i=1}^{2n} {Si^2} - \sum_{i=1}^{2n} {Si}} {n \times (n+1)}$$

$$=\frac {\sum_{i=1}^{2n} {Si^2} - n(n+1)} {n(n+1)}$$

接下来只需要根据$\sum_{i=1}^{2n} Si=n(n+1)$求出$\sum_{i=1}^{2n} {Si^2}$的最小值就好啦

我们可以小的情况推到大的情况,比如知道$a+b=x$,求$min(a^2+b^2)$

可以用均值不等式的思想来证明

因为$(a-b)^2 \geq 0$,所以$a^2+b^2 \geq 2ab$

又因为$(a+b)^2=x^2$,所以$2ab=x^2-a^2-b^2$

代入$a^2+b^2 \geq 2ab$就有$a^2+b^2 \geq {\frac {x^2} {2}}$

同理,因为

$$\sum_{i=1}^{2n}\sum_{j=1}^{2n}(Si-Sj)^2 \geq 0$$

所以

$$\sum_{i=1}^{2n}\sum_{j=1}^{2n}(Si^2+Sj^2-2SiSj) \geq 0$$

$$\sum_{i=1}^{2n}\sum_{j=1}^{2n}Si^2 + \sum_{i=1}^{2n}\sum_{j=1}^{2n}Sj^2 - \sum_{i=1}^{2n}\sum_{j=1}^{2n}2SiSj\geq 0$$

$$\sum_{i=1}^{2n}\sum_{j=1}^{2n}Si^2 + \sum_{i=1}^{2n}\sum_{j=1}^{2n}Sj^2\geq 2\sum_{i=1}^{2n}\sum_{j=1}^{2n}SiSj$$

$$2n\sum_{i=1}^{2n}Si^2 +2n\sum_{j=1}^{2n}Sj^2\geq 2\sum_{i=1}^{2n}\sum_{j=1}^{2n}SiSj$$

$$4n\sum_{i=1}^{2n}Si^2\geq 2\sum_{i=1}^{2n}\sum_{j=1}^{2n}SiSj$$

又因为$\sum_{i=1}^{2n} Si=n(n+1)$

所以

$$\left ( \sum_{i=1}^{2n} Si \right )^2=n^2(n+1)^2$$

$$\sum_{i=1}^{2n}\sum_{j=1}^{2n}SiSj=n^2(n+1)^2$$

代入上面的不等式就有

$$4n\sum_{i=1}^{2n}Si^2\geq 2\sum_{i=1}^{2n}\sum_{j=1}^{2n}SiSj=2n^2(n+1)^2$$

$$\sum_{i=1}^{2n}Si^2\geq \frac {n(n+1)^2} {2}$$

我们终于求出了$\sum_{i=1}^{2n}Si^2$的最小值

把它代入我们之前求出的式子里

$$\frac {\sum_{i=1}^{2n} {Si^2} - n(n+1)} {n(n+1)}\geq \frac {\frac {n(n+1)^2} {2}-n(n+1)} {n(n+1)}$$

$$=\frac {n+1} {2} -1=\frac {n-1} {2}$$

所以不管出题人怎么出数据,任选两个字符串共有元素的期望个数最小都是$\frac {n-1} {2}$,所以直接O(n^3/32)是很正确的

代码?我™手贱重启电脑清空了

【CSP模拟赛】Confess(数学 玄学)的更多相关文章

  1. CSP模拟赛游记

    时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时 ...

  2. 【CSP模拟赛】starway(玄学建边 最小生成树)

    问題描述 小w伤心的走上了 Star way to heaven.   到天堂的道路是一个笛卡尔坐标系上一个n×m的长方形通道(顶点在(0,0))和(n,m)),小w从最左边任意一点进入,从右边任意一 ...

  3. 【CSP模拟赛】坏天平(数学&思维)

    蹭兄弟学校的题目做还不用自己出题的感觉是真的爽 题目描述 nodgd有一架快要坏掉的天平,这架天平右边的支架有问题,如果右边的总重量比左边多太多,天平就彻底坏掉了.现在nodgd手上有n种砝码,质量分 ...

  4. 【CSP模拟赛】方程(数学)

    题目描述 求关于x的方程:x1+x2+……xk=n的非负整数解的个数. 输入格式 仅一行,包含两个正整数n,k. 输出格式 一个整数,表示方程不同解的个数,这个数可能很大,你只需输出mod 20080 ...

  5. 【csp模拟赛5】限制 (restrict.cpp)--数学

    自己看吧: 爆搜代码: //春水初涨-春林初盛-春风十里-不如你 //----hzwer // 这是啥子题,读不懂-- //题意有问题 -- #include<iostream> #inc ...

  6. 20180606模拟赛T4——数学游戏

    数学游戏 题目描述: 小T又发脑残了,没错,她又要求奇怪的东西,这次她想知道[X,Y]之间整数有多少可以表示成K个不同的B的幂的和形势.如\(x,y,k,b=15,20,2,2\),则有: \[17= ...

  7. 【CSP模拟赛】Freda的迷宫(桥)

    题目描述 Freda是一个迷宫爱好者,她利用业余时间建造了许多迷宫.每个迷宫都是由若干房间和走廊构成的,每条走廊都连接着两个不同的房间,两个房间之间最多只有一条走廊直接相连,走廊都是双向通过.  黄昏 ...

  8. CSP模拟赛2游记

    这次由于有课迟到30min,了所以只考了70min. 调linux配置调了5min,只剩下65min了. T1:有点像标题统计,但要比他坑一点,而且我就被坑了,写了一个for(int i=1;i< ...

  9. 【CSP模拟赛】Freda的旗帜

    题目描述  要开运动会了,Freda承担起了制作全校旗帜的工作.旗帜的制作方法是这样的:Freda一共有C种颜色的布条,每种布条都有无数个,你可以认为这些布条的长.宽.厚都相等,只有颜色可能不同.每个 ...

随机推荐

  1. virsh 添加虚拟交换机

    virsh 添加虚拟交换机 来源 https://blog.csdn.net/a1987463004/article/details/90905981 vim /etc/libvirt/qemu/ne ...

  2. docker 安装redis mysql rabbitmq

    docker redis mysql rabbitmq 基本命令 安装redis 安装mysql 安装rabbitmq 基本命令 命令格式: docker 命令 [镜像/容器]名字 常用命令: sea ...

  3. Django:实现读写分离

    库的配置 1.读写分离 settings配置 #settings.py 配置库信息,生成2个库 DATABASES = { 'default': { 'ENGINE': 'django.db.back ...

  4. Unity Physicals Rigidbody with multiple colliders

    Rigidbody with multiple colliders adding colliders changes the center of mass and rotation behaviour ...

  5. day 02 作业 预科

    目录 作业 作业 ==1.什么是编程== 通过使用编程语言做一些事情,表达一些自己的想法. ==2.简述计算机五大组成.== 计算机由cpu ,运算器 ,控制器,存储器(外存,内存) 输入设备 输出设 ...

  6. 复盘一篇浅谈KNN的文章

    认识-什么是KNN KNN 即 K-nearest neighbors, 是一个hello world级别, 但被广泛使用的机器学习算法, 中文叫K近邻算法, 是一种基本的分类和回归方法. KNN既可 ...

  7. pyecharts绘制geo地图

    pyecharts是一种非常强大的绘图python库,绘制的图形非常好看,并且有代表性,不仅仅是地图,还可以绘制条形图.饼图.词云图等等. # 安装方法 pip install pyecharts # ...

  8. varnish加速web

    varnish主要功能是代理服务器和缓存,和nginx代理一样可以反向代理web服务器.但是varnish不能作为web服务器.但是它的优点是可以将访问过的网站还存在代理服务器上,以便于提升web的访 ...

  9. node基础学习——http基础知识-02-http响应数据流

    <一> 发送服务器端响应流 在createServer()方法的参数值回调函数或服务器对象的request事件函数中的第二个参数值为一个http.ServerResponse对象,可以利用 ...

  10. P1525 关押罪犯[扩展域并查集]

    题目来源:洛谷 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整 ...