题目描述

  小$w$隐藏的心绪已经难以再隐藏下去了。
  小$w$有$n+1$(保证$n$为偶数)个心绪,每个都包含了$[1,2n]$的一个大小为$n$的子集。
  现在他要找到隐藏的任意两个心绪,使得他们的交大于等于$\frac{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\leqslant 100$。
  对于$50\%$的数据满足$n\leqslant 1\times 10^3$。
  对于$100\%$的数据满足$n\leqslant 6\times 10^3$。


题解

随机化竟然是正解,还好我机灵了一下。

官方题解我也是醉了……

用$bitset$优化一下就好啦。

两个集合的交的期望大小为:

$$\min(\sum\limits_{i=1}^{2n}\frac{C_{c_i}^2}{C_{n+1}^2}|\sum\limits_{i=1}^{2n}c_i=n(n+1))=\frac{n-1}{2}$$

至少需要$n$对就好了。

时间复杂度:$\Theta(\frac{n^2}{\omega})$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
int bin[9];
char ch[10000];
bitset<12000> bit[6010];
int main()
{
scanf("%d",&n);
for(int i=0;i<6;i++)bin[i+1]=1<<i;
for(int i=1;i<=n+1;i++)
{
scanf("%s",ch+1);
int len=strlen(ch+1);
int top=0;
for(int j=1;j<=len;j++)
{
int x=ch[j]-33;
if(++top>2*n)break;
if(x&bin[6])bit[i][top]=1;
if(++top>2*n)break;
if(x&bin[5])bit[i][top]=1;
if(++top>2*n)break;
if(x&bin[4])bit[i][top]=1;
if(++top>2*n)break;
if(x&bin[3])bit[i][top]=1;
if(++top>2*n)break;
if(x&bin[2])bit[i][top]=1;
if(++top>2*n)break;
if(x&bin[1])bit[i][top]=1;
}
}
while(1)
{
int x=rand()%(n+1)+1;
int y=rand()%(n+1)+1;
if(x==y)continue;
if((bit[x]&bit[y]).count()>=(n>>1))
{printf("%d %d\n",x,y);return 0;}
}
return 0;
}

rp++

[JZOJ5399]:Confess(随机化)的更多相关文章

  1. APP漏洞扫描用地址空间随机化

    APP漏洞扫描用地址空间随机化 前言 我们在前文<APP漏洞扫描器之本地拒绝服务检测详解>了解到阿里聚安全漏洞扫描器有一项静态分析加动态模糊测试的方法来检测的功能,并详细的介绍了它在针对本 ...

  2. rabin 素性检验 随机化算法

    #include <cstdio> #include <cstdlib> #include <ctime> typedef long long int LL; in ...

  3. [USACO2005][POJ2454]Jersey Politics(随机化)

    题目:http://poj.org/problem?id=2454 题意:给你3*k(k<=60)个数,你要将它们分成3个长度为k的序列,使得其中至少有两个序列的和大于k*500 分析:以为有高 ...

  4. POJ 矩阵相乘 (随机化算法-舍伍德(Sherwood))

    周三的算法课,主要讲了随机化算法,介绍了拉斯维加斯算法,简单的理解了为什么要用随机化算法,随机化算法有什么好处. 在处理8皇后问题的时候,穷举法是最费时的,回朔比穷举好点,而当数据量比较大的时候,如1 ...

  5. POJ3318--Matrix Multiplication 随机化算法

    Description You are given three n × n matrices A, B and C. Does the equation A × B = C hold true? In ...

  6. hdu 4739 Zhuge Liang's Mines 随机化

    Zhuge Liang's Mines Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...

  7. 惊艳的随机化方法 -World Search (homework-04)

    homeword04-word search 0. 摘要 本次作业,要求完成一个word search的程序,具体要求是: 输入:一个包含20-60个单词的文件,各单词不大于20个字母,无空格. 输出 ...

  8. Codeforces Round #192 (Div. 1) C. Graph Reconstruction 随机化

    C. Graph Reconstruction Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/3 ...

  9. poj 2454 Jersey Politics 随机化

    随机化算法+贪心! 将3*k排序后分成3分,将第二第三份的和分别加起来,让和与500*k比较,都大于则输出,否则,随机生成2个数,在第二第三份中交换! 代码如下: #include<iostre ...

随机推荐

  1. Python模拟进度条

    import time for i in range(0,101,2) time.sleep(0.2) num = i // 2 per = '\r %s %% : %s'%(i,'*'*num) p ...

  2. redis 学习(二)-- 通用命令

    redis 学习(二)-- 通用命令 1. keys pattern 含义:查找所有符合给定模式(pattern)的key 命令 含义 keys * 遍历所有 key keys he[h-l]* 遍历 ...

  3. [Nest] 02.nest之控制器

    控制器 Controller Nest 的核心概念 模块 Module 控制器 Controller 服务与依赖注入 Provider Dependency injection 控制器负责处理应用的特 ...

  4. jsp页面中使用 splitfn:split注意事项

    我们有一个 字段存储内容是  xxxx意见~~@~~是 在页面上需要分开显示,格式为 xxx意见 是 使用 ${fn:split(comments, '~~@~~')[1]} 来分割是发现出现@符文字 ...

  5. 计算机网络--TCP三次握手和四次挥手

    TCP(传输控制协议) TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.通过三次握手建立连接,通讯完成时要拆除连 ...

  6. spring boot jpa @PreUpdate结合@DynamicUpdate使用的局限性

    通常给实体添加audit审计字段是一种常用的重构方法,如下: @Embeddable @Setter @Getter @ToString public class Audit { /** * 操作人 ...

  7. kill指定用户所有进程

    在linux系统管理中,我们有时候需要kill某个用户的所有进程,这里有以下几种方法,以heboan用为例 pkill方式 pkill -u heboan killall方式 killall -u h ...

  8. whistle 前端工具之抓包利器

    一.业务场景 前端本地开发的场景中,我们需要频繁的改动代码,并需要实时看到效果,并且在一些开发场景中,我们需要将特定的请求代理到特定的IP.本地文件等,所以使用fiddler或whistle等本地.真 ...

  9. 用js方式取得接口里面json数据的key和value值

    大家在实际操作中难免遇到对接口的问题,想必对一些小白来说取得里面想要是数据也是很是头疼,那么接下来我会结合接口实际情况教大家怎么取得里面相应的数据 接口数据例如:(数据为 模拟数据,json格式) { ...

  10. 安装Mybatis插件

    http://blog.csdn.net/nextyu/article/details/69225004