习用之语

题目大意

给出 N N个长度为4的字符串,求出仅差DD个字符的字符串的对数。

输入格式

第一行两个正整数 N N,DD。
接下来 N N行,每行一个长度为4的字符串。

输出格式

一行,一个整数,为仅差DD个字符的字符串的对数。

样例输入

4 2
0000
a010
0202
a0e2

样例输出

3

样例解释

一共三对。
第一对:0000,a010
第二对:a010,a0e2
第三对:0202,0000
故输出3。

数据范围

题解

15分算法

做一次 N2 N^2的两两匹配统计答案即可。

100分算法

定义一个数组 G G,GiG_i表示最多能有 i i个不同的字符的字符串匹配对数。

最能多有ii个不同也就等于至少有(4- i i)个相同。
那我们的问题也就转换成至少有(4-ii)个相同字符相等的字符串匹配对数,这样就可以求出 Gi G_i了。

那我们怎样求 Gi G_i呢?
首先从每个字符串中抽取(4- i i)个字符出来并按顺序排好形成NN个新的字符串。
其中有多少个字符串相等就有多少对。
算法有很多,我用的是快排,这样一样的字符串就会堆在一起。
至于抽取字符出来的方法可以自己枚举,不多,对于每个 i i最多只有6种。

定义一个数组FF, Fi F_i表示仅有 i i个不同的字符的字符串匹配对数。
根据容斥原理,FF可以从 G <script type="math/tex" id="MathJax-Element-23">G</script>转移过来。
具体转移如下:

f[0]=g[4] (这个比较显然)
f[1]=g[3]-f[0]*4
(仅为1个不同(即仅为3个相同),在仅为0个不同(即全部相同)里算了4次,这4次都要去掉,后面同理)
f[2]=g[2]-f[1]*3-f[0]*6
f[3]=g[1]-f[2]*2-f[1]*3-f[0]*4
f[4]=n*(n-1)/2-f[0]-f[1]-f[2]-f[3](这里用了比较取巧的方法,即用总的减去其他的)

JZOJ.4377[GDOI2016模拟3.10]习用之语 解题报告相关推荐

  1. [jzoj 6093] [GDOI2019模拟2019.3.30] 星辰大海 解题报告 (半平面交)

    题目链接: https://jzoj.net/senior/#contest/show/2686/2 题目: 题解: 说实话这题调试差不多花了我十小时,不过总算借着这道题大概了解了计算几何的基础知识 ...

  2. 【GDOI2016模拟3.10】习用之语

    Description 有N个长度为4的字符串,求着N个字符串中有多少对差且仅相差d个字符. N<=50000 Solution 对于这种差且仅相差的题目,一般都会用容斥原理. 首先,我们统计出 ...

  3. [JZOJ 5911] [NOIP2018模拟10.18] Travel 解题报告 (期望+树形DP)

    题目链接: http://172.16.0.132/senior/#contest/show/2530/1 题目: EZ同学家里非常富有,但又极其的谦虚,说话又好听,是个不可多得的人才.       ...

  4. C语言:L1-031 到底是不是太胖了 (10分)(解题报告)

    立志用更少的代码做更高效的表达 据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | ...

  5. [JZOJ3385] [NOIP2013模拟] 黑魔法师之门 解题报告(并查集)

    Description 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与Violet星球的战争中,由于Z副官的愚蠢,地球的领袖applepi被邪恶的黑魔法师Vani囚禁在了Vi ...

  6. C语言满分解法:L1-041 寻找250 (10分)(解题报告)

    立志用更少的代码做更高效的表达 对方不想和你说话,并向你扔了一串数-- 而你必须从这一串数字中找到"250"这个高大上的感人数字. 输入格式: 输入在一行中给出不知道多少个绝对值不 ...

  7. C语言:L1-037 A除以B (10分)(解题报告)

    真的是简单题哈 -- 给定两个绝对值不超过100的整数A和B,要求你按照"A/B=商"的格式输出结果. 输入格式: 输入在第一行给出两个整数A和B(−100≤A,B≤100),数字 ...

  8. 9行代码AC——L1-022 奇偶分家(10 分)(~解题报告~)

    立志用更少的代码做更高效的表达 给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000):第2行给出N个非负整数,以空格分隔. 输出格式: 在一行中先后输出奇数 ...

  9. 10行代码AC——L1-018 大笨钟 (10分)(~解题报告~)

    立志用更少的代码做更优化的表达 微博上有个自称"大笨钟V"的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲钟并不定时.一般敲钟的点数是根据敲钟时 ...

最新文章

  1. MaxCompute Mars 完全指南
  2. Linux系统发行版本介绍(一)——CentOS介绍
  3. 目标检测性能评价指标mAP、Precision、Recall、IoU
  4. 大部分程序员还不知道的 Servelt3 异步请求,原来这么简单?
  5. su插件打开显示html,如何让自己的su从工具变成神器?你需要这些插件
  6. Java测试驱动开发(TDD)
  7. 音频处理——常用音频编码格式简介(PCM、G726、ADPCM、LPCM、G711、AAC)
  8. excel2010 向程序发送命令时出现问题
  9. B树与B+树简明扼要的区别
  10. java pdf stamper_使用pdfstamper(Itext)将页码添加到pdf
  11. 对seed()的个人理解
  12. 【算法和数据结构学习笔记】整合版
  13. 【娱乐】末考文综抢救
  14. Fortran编程快速入门
  15. 【ESP32系列开发】ESP32-PICO-D4 使用双核
  16. SMT的主要工作流程和部分
  17. CP2K 7.1.0 使用 Intel 编译器安装
  18. 设置Windows 7锁屏背景图片
  19. 【技术推文】生态系统碳库的遥感估算:森林碳储量、草地系统、城市扩张、区域能源消耗碳排放空间格局模拟、大气温室气体浓度的卫星监测、区域碳循环的遥感模拟与预测(遥感数据同化\模型驱动使用)
  20. GPG error解决方案

热门文章

  1. 中关村十大AI研究院|盘点
  2. Simulink三相异步电机仿真(1)
  3. 速腾聚创16线激光雷达rslidar-16的ros驱动安装与rviz点云显示
  4. 桌面壁纸被计算机管理员禁用,电脑壁纸被管理员设置禁用了,怎么处理啊?
  5. Pytorch下transforms.ToTensor(),transforms.Normalize()详解,及代码实现和复原
  6. 开箱即用的物联网平台-IoTLink
  7. php错误报告和调试
  8. [转]完美解决图片/链接虚线边框
  9. 基于B树的图书管理系统(C语言)(含完整代码)
  10. 《软件登记测试报告》可以作为软件第三方检测报告使用吗