#2012. [Ceoi2010]Pin

Online Judge:Bzoj-2012

Label:容斥,STL

题目描述

给出N(2<=N<=50000)个长度为4的字符串,问有且仅有D(1<=D<=4)处不相同的字符串有几对

输入格式

第1行: N,D
以下N行每行一个字符串

输出格式

一个数:有多少对有且仅有处不相同的字符串。

样例

输入

4 2
0000
a010
0202
a0e2

输出

3

题解:

n的数据范围为50000,暴力\(O(N^2*D)\)铁T。

先转化一下问题,它问有且仅有d处不同的对数,那我们就将其转化为有且仅有4-d处相同的对数。这两个问题是完全等价的。我们考虑继续简化问题,上面这个问题难在“有且仅有”,发现可以把它转化为“有4-d处相同的对数”,然后利用容斥解决问题。

于是问题就变的很水了,由于只字符串长度固定为4,我们用二进制x表示当前考虑的是哪几位(比如\((1001)_2表示只考虑字符串的第1和第4位\)),先预处理出二进制表示的数\(x∈[0,15]\)所含的1的个数\(sz1[x]\)。

接下来枚举当前数x,然后再枚举n个字符串,根据要考虑的位进行哈希(map搞一下),然后进行计数,将考虑x这几位的贡献加入\(rc[sz1[x]]\)(\(rc[i]表示有i出相同的字符串的对数\)),最后根据组合数容斥一下,得出答案。

代码如下,详见注释↘

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char s[50000][5];
int sz1[20],rc[5],n,d;
map<ll,int>mp;
int main(){scanf("%d%d",&n,&d);for(int i=1;i<=n;i++)scanf("%s",s[i]);for(int i=0;i<(1<<4);i++)sz1[i]=sz1[i>>1]+(i&1);//预处理含1个数for(int i=0;i<=15;i++){ll cnt=0;mp.clear();for(int j=1;j<=n;j++){ll id=0;//哈希,由于可能出现的可见字符貌似(255???)个左右,下面乘*260for(int k=0;k<4;k++)if(i&(1<<k))id=id*260+s[j][k];cnt+=mp[id],mp[id]++;}rc[sz1[i]]+=cnt;}//根据组合数容斥rc[3]-=rc[4]*4;//c(4,3)rc[2]-=rc[4]*6+rc[3]*3;//c(4,2),c(3,2)rc[1]-=rc[4]*4+rc[3]*3+rc[2]*2;rc[0]-=rc[4]+rc[3]+rc[2]+rc[1];printf("%d",rc[4-d]);
}

转载于:https://www.cnblogs.com/Tieechal/p/11226407.html

[Ceoi2010]Pin相关推荐

  1. 增加一个dbe连接_pogo pin连接器是如何解决振动的问题?

    随着智能设备的发展, 无论是手机还是运动手环.智能手表,智能穿戴,考虑到其使用特点,产品使用的pogo pin连接器的在设计时就必须考虑振动问题.此外,还要考虑到整个智能产品结构框架与单个pogo p ...

  2. gpio pin和pad的区别

    PIN指芯片封装好后的管脚,即用户看到的管脚: PAD是硅片的管脚,是封装在芯片内部的,用户看不到. PAD到PIN之间还有一段导线连接的.

  3. cadence原理图封装pin名称重复_硬件工程师必备技巧--如何快速制作PCB封装

    去年底注册的微信公众号,最近提示我登录,否则冻结.打开电脑登录后,发现有几位用户关注了,感到有点意外,去年比较忙,一直也没发什么帖子出来.有空还是得不断学习,不断总结,分享出来. 对于硬件工程师,我们 ...

  4. SIM PIN Lock

    2019独角兽企业重金招聘Python工程师标准>>> PIN,全称Personal Identification Number,即个人识别码,用来认证使用者的身份. 当用户启用PI ...

  5. 海康 安全码 修改密码_手机为什么要设置PIN码 手机设置PIN码的原因【介绍】

    在刷新闻的时候,经常会看到这样的内容:警方提醒大众要设置手机卡PIN码. 为什么警方会提醒大家设置手机卡PIN码?它究竟是个啥?今儿,小编就和大家分享下. 什么是手机卡PIN码? 手机卡PIN码简单来 ...

  6. bluez 设置绑定pin码_国家工信部紧急提醒:一定要设置这个密码!

    近日,一名网友分享了自己的亲身经历,因为手机被盗,不法分子通过手机上的App,窃取他的个人信息,进而申请网贷,造成财产损失.该文章通过互联网大量转发,引发网民对手机个人信息保护和财产安全的担忧. 针对 ...

  7. bluez 设置绑定pin码_国家工信部重要提醒:一定要设置这个密码!

    近日,一名网友分享了自己的亲身经历,因为手机被盗,不法分子通过手机上的App,窃取他的个人信息,进而申请网贷,造成财产损失.该文章通过互联网大量转发,引发网民对手机个人信息保护和财产安全的担忧. 针对 ...

  8. linux查询引脚功能复用,Linux:使用pinctrl子系统动态切换复用pin脚的功能

    Linux:使用pinctrl子系统动态切换复用pin脚的功能 Linux:使用pinctrl子系统动态切换复用pin脚的功能 Linux:使用pinctrl子系统动态切换复用pin脚的功能 一.许多 ...

  9. EM12C监控遇到 ‘cursor: pin S wait on X’ waits.

    最近安装了EM12C,对上有ERP应用的所有库进行监控.EM12C相对之前的grid control还是改进比较大的.安装也蛮简单. 今早一来发现一库有大量的并发,如下图,图1-1: 点上图,图1-1 ...

最新文章

  1. Linux SWAP分区占用率高,刷新SWAP分区方法
  2. 深入理解指针以及二级指针(指针的指针)
  3. “AI+教育”:人工智能下个掘金点?
  4. android无法实例化服务,Android:无法实例化类:没有空的构造函数
  5. poj1797Heavy Transportation最大生成树
  6. mybatis_user_guide(4) Mapper XML 文件
  7. [剑指offer]面试题第[2]题[JAVA][替换空格][函数][字符串]
  8. java_db常见错误总结
  9. iqc工作职责和工作内容_新媒体实习生是做什么的?新媒体实习生岗位职责工作内容...
  10. VMWare 装mac os x 一个必备优化神器 beamoff
  11. 什么是ISO9000质量管理体系认证以及认证流程
  12. matlab和keil下如何查找数组最大值的下标(角标)
  13. 易语言禁止服务器,禁止指定程序联网易语言源码
  14. 光谱分辨率单位_【ENVI入门系列】16.基本光谱分析
  15. FCP-报表交付工程师考试经验
  16. Server、Service和Servlet的区分
  17. Wincc报表案例_设备运行报表
  18. 虚拟资源项目是什么?依靠虚拟资源项目月入万元能实现吗?
  19. 用tailwindcss适配暗黑模式竟如此简单
  20. python,全自动获取图片,并下载你喜欢的美女图片

热门文章

  1. 会玩!抖音上线拉春联特效 “拜个抖音年”活动参与人数超65万
  2. 新年就是要你红!华为Mate 20 Pro馥蕾红璨星蓝来袭
  3. 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一)(转)
  4. 自定义ScrollView控件 -- 拉申时跟随缩放效果
  5. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序
  6. 【clickhouse】MergeTree storage require data path INCOORRECT_FILE_NAME
  7. 95-34-030-Context-DefaultChannelHandlerContext
  8. 【ElasticSearch】IK分词加入标点符号
  9. 【es】es API源码分析
  10. 【clickhouse】docker 下 搭建 clickhouse 监控