【题目描述】
许多人都不知道,奶牛很喜欢拼图,特别是单词拼图。
农夫约翰的奶牛最近发明了一个有趣的“单词查找器”拼图。
这种拼图的一个例子是:

USOPEN
OOMABO
MOOMXO
PQMROM

作为奶牛,它们唯一感兴趣的单词是MOO,它可以在拼图中多次沿水平、垂直、454545度斜线或135135135度斜线出现。
上例中,MOO一共出现了666次。
农夫约翰也是个拼图迷,由于奶牛们不希望他在它们之前解决“单词查找器”拼图,因此它们使用”替换密码“对内容进行了加密。
该“替换密码”用不同的字母替换了字母表中的每个字母。
例如,AAA可以映射到XXX,BBB可以映射到AAA,依此类推。
没有字母映射到自身,也没有两个字母映射到同一个字母(否则解将是不明确的)。
不幸的是,奶牛忘记了替换密码的具体加密方式。
请帮助它们确定如果使用适当的替换密码解密,谜题中可能存在的最大MOO数。

【输入格式】
第一行包含N,MN,MN,M,表示拼图的尺寸为NNN行MMM列。
接下来NNN行,每行包含MMM个大写字母,形容加密后的拼图。

【输出格式】
输出如果使用适当的替换密码解密,谜题中可能存在的最大MOO数。

【数据范围】
1≤N,M≤501≤N,M≤501≤N,M≤50

【输入样例】

4 6
TAMHGI
MMQVWM
QMMQSM
HBQUMQ

【输出样例】

6

【样例解释】
在此样例中,MMM和OOO分别被替换为了QQQ和MMM。
因此解密最多可存在666个MOO

【分析】


我们可以将任意字母映射成另一种字母,但是不能映射成自己本身,因此所有ABB型且不为MOO的字符串均可映射成MOO

枚举以每个点为起点,然后枚举向八个方向延伸所能构造出的长度为333的字符串,如果构造出的字符串sss形如ABB,且字符串的第一个字母不为M,后两个字母不为O,那么就将字符串sss出现的次数加一。最后所有符合要求的字符串中出现次数最多的即为答案。


【代码】

#include <iostream>
#include <cstring>
#include <algorithm>
#include <string>
#include <unordered_map>
using namespace std;const int N = 60;
char g[N][N];
unordered_map<string, int> cnt;//所有形如ABB且A不为M、B不为O的字符串数量
int n, m;
int dx[8] = { -1, -1, -1, 0, 1, 1, 1, 0 };
int dy[8] = { -1, 0, 1, 1, 1, 0, -1, -1 };int main()
{cin >> n >> m;for (int i = 0; i < n; i++) cin >> g[i];for (int i = 0; i < n; i++)for (int j = 0; j < m; j++){for (int d = 0; d < 8; d++){string s;s += g[i][j];int x = i, y = j;bool flag = true;//如果越界了则flag为falsefor (int u = 0; u < 2; u++){x += dx[d], y += dy[d];if (x < 0 || x >= n || y < 0 || y >= m) { flag = false; break; }s += g[x][y];}if (flag && s[0] != s[1] && s[1] == s[2] && s[0] != 'M' && s[1] != 'O') cnt[s]++;}}int res = 0;for (auto& [k, v] : cnt) res = max(res, v);cout << res << endl;return 0;
}

AcWing 1874. 哞加密(枚举,哈希)相关推荐

  1. AC 哞加密 (枚举+哈希+unordered_map)

    在使用暴力后去看了别人的然后复刻,一开始把unordered_map<string, int> hash;放在全局了直接bug了,但把它放在主函数就是没事ac了.....=_= 找到原因了 ...

  2. java md5 密钥_java加密算法--MD5加密和哈希散列带秘钥加密算法源码

    packagecom.ompa.common.utils;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmEx ...

  3. AcWing 478. 侦探推理 枚举+模拟

    AcWing 478. 侦探推理 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏. 游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯( ...

  4. Linux加密和安全篇(一)gpg、对称和非对称加密、哈希算法

    对于linux运维工作者而言,加密技术已经很早就用于数据的存储和数据之间的交换.我们可以会为了防止你的网站.服务器或者系统,我们会使用一些手段来防止一些恶意的攻击或者访问.一下就对linux的安全和加 ...

  5. php md5加密算法源码,MD5加密和哈希算法

    MD5加密算法为现在应用最广泛的哈希算法之一,该算法广泛应用于互联网网站的用户文件加密,能够将用户密码加密为128位的长整数.数据库并不明文存储用户密码,而是在用户登录时将输入密码字符串进行MD5加密 ...

  6. AcWing 1902. 马拉松(枚举)

    [题目描述] 农夫约翰对他的奶牛们的健康状况并不满意,于是给他的奶牛们报名了各种健身活动. 他最喜欢的奶牛贝茜被报名参加了一个跑步班. 在那里,她有希望在一场马拉松比赛中穿越约翰农场所在的城市的市中心 ...

  7. 密码加密:哈希(hash)加盐

    密码落地要加密 可以采用md5进行加密 数据泄露后md5数据容易暴力破解 可以对密码进行加盐(系统给用户密码拼接上其他字符串)增加破解难度 对每个账号添加不同的盐,能够提高安全性 每个账号的盐不同,则 ...

  8. AcWing 1912. 里程表(枚举)

    [题目描述] 约翰的奶牛正在公路上旅行. 他们汽车上的里程表显示的是整数里程值. 旅途开始时里程表显示的里程值为 X X X,旅途结束时里程表显示的里程值为 Y Y Y. 每当里程表显示"有 ...

  9. AcWing 1351. 密码锁(枚举,容斥原理)

    [题目描述] 农夫约翰的奶牛们总是偷偷的逃出他的农场,去外面为非作歹. 农夫约翰为了防止它们私自逃离农场,购买了一个密码锁,以此阻止奶牛们打开农场大门. 约翰知道他的奶牛们都非常聪明,因此他想要确保它 ...

最新文章

  1. 【NeurIPS2019】Yoshua Bengio报告:深度学习系统从1代到2代
  2. PHP获取客户端和服务器IP地址
  3. PHP中的字符串 — 表示方法
  4. P1091 合唱队形(LIS)
  5. IDEA中无法识别servlet类或找不到javax.servlet.*
  6. 肿瘤细胞信号转导: 肿瘤治疗的靶向信号通路 PDF
  7. 【java】java AsyncHttpClient使用
  8. 三大运营商回复 4G 降速;微信上线语音转文字功能;IntelliJ IDEA 2019.2.1 发布 | 极客头条...
  9. PostFix邮件网关无法向公网投递邮件问题分析
  10. 迅捷cad_迅捷功能
  11. W25Q64简介(译)
  12. Wap Push 源码java实现
  13. 服务器用户名 administrator 修改,windows2003中Administrator用户名与密码修改图解Windows服务器操作系统 -电脑资料...
  14. 【UML建模】(5) UML建模之活动图
  15. 浏览器野史 UserAgent 列传(上)
  16. 51单片机c语言试题及答案,单片机C语言期末考试题..
  17. Kubernetes部署(七):k8s项目交付----(4)日志收集
  18. 浏览器内核、渲染引擎、x86与RAM架构等基本概念
  19. php自动收录导航程序,最新自动收录自带查反链导航源码
  20. java使用grok解析日志文件

热门文章

  1. 01、利用OpenCV和numpy对图片进行堆砌
  2. 服务器的运行寿命一般有多久?服务器怎么选?
  3. 派美雅助力电子档案磁光自动备份刻录归档
  4. 记双系统 ubuntu18.04 无线网卡驱动安装
  5. Atitit 号码规范 靓号指南 attilax总结 v4 r926.docx 1. Keyword关键词 2 2. 为什么我们需要靓号指南,因为很多人手机号都是瞎选乱选,没有规范不成方圆
  6. Soot入门(1): 安装与生成Jimple文件
  7. DreamWeaver序列号和Dreamweaver CS4序列号以及Dreamweaver CS5 序列号
  8. win10IE浏览器打不开怎么办
  9. JAVA SPI机制概述
  10. 电子商务O2O不是零售业的“补充”,它将毁灭零售业!