题目描述

小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. 如何使用Git 优雅的版本回退呢?

    在版本迭代开发过程中,相信很多人都会有过错误提交的时候(至少良许有过几次这样的体验).这种情况下,菜鸟程序员可能就会虎驱一震,紧张得不知所措.而资深程序员就会微微一笑,摸一摸锃亮的脑门,然后默默的进行 ...

  2. 文件包含漏洞File Inclusion

    文件包含漏洞 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞.非授权文件包含漏洞等. 文件包含分类 LFI:本地文件包含(Local File Inclusion) RFI:远程文件包含 ...

  3. MySQL数据库之互联网常用架构方案

    一.数据库架构原则 高可用 高性能 一致性 扩展性 二.常见的架构方案 方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用 jdbc:mysql://vip:3306/xxdb 高可用分析: ...

  4. Spring框架的核心概念是什么?需要掌握的知识点都有哪些?

    Spring其主要精髓 就是IOC和AOP.掌握好了这两点对于理解Spring的思想颇有意义. IOC(英文 Inversion of Control)就是控制反转的意思.就是把新建对象(new Ob ...

  5. 基于Text-CNN模型的中文文本分类实战

    Text-CNN 1.文本分类 转眼学生生涯就结束了,在家待就业期间正好有一段空闲期,可以对曾经感兴趣的一些知识点进行总结. 本文介绍NLP中文本分类任务中核心流程进行了系统的介绍,文末给出一个基于T ...

  6. springdata jpa 关于分页@Query问题

    关于springdata jpa 分页问题相信很多小伙伴都遇到过,只要表中数量到达分页条件就会报错 废话少说直接上代码: @Query(nativeQuery = true, value = &quo ...

  7. Oracle数据库插入过程中特殊符号

    -- 问题描述:(插入数据中有特殊符号)数据插入后乱码. -- 背景:客户提供部分Excel表格数据要求导入数据库.由于考虑到数据量不大所以粗略在Excel中进行了sql处理(在数据前后添加sql及对 ...

  8. 《深入理解 Java 虚拟机》读书笔记:Java 内存区域与内存溢出异常

    前言 最近开始看这本书,记得前段时间拿起这本书的时候,心情是相当沉重的!当时的剧本是这样的-- 内景.家里 - 下午 我(画外):唉,有点无聊啊!(偶然撇过书架)这么多书得看到什么时候啊,要不要拿一本 ...

  9. Linux命令——pidof

    参考:Linux pidof Command Examples To Find PID of A Program/Command Linux pidof Command Tutorial for Be ...

  10. Pthon面向对象-异常处理

    Pthon面向对象-异常处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.异常概述 1>.错误(Error) 逻辑错误: 算法写错了,例如加法写成了减法. 笔误: 例如 ...