四川今天又上热搜了,继南部疫情的未雨绸缪后,龙槽沟是真的倾盆大雨了。我没有兴趣虚伪矫情地对罹难的游人表达同情,因为人与人互不相通徒增谈资;我也没有兴趣居高临下地对擅闯的愚人表达不屑,因为你我皆为乌合之众,在流媒体的灯红酒绿下娱乐至死。地球上最聪明的大脑像条二极管,只能接受最简单的二元判断,稍微复杂的变量就足以使之熔断。基础工作人员与群众大抵是存在着些割裂的,只要就着喇叭喊叫,就一定是在表达“认同你”或“否定你”其一,绝无“陈述事实”一说。学了几十年逻辑,还是顺应情绪,不断窥视大众行为决断,也是,法不责众嘛。有人扭曲身形挤进人群刷安全感,有人刻意和大众对立谋求优越感,殊途原来也是可以同归的呵。

亚当夏娃唉声叹气

达尔文骂骂咧咧地投靠上帝

hash求子串可以O(1),

$click$ $for$ $codes$
  1. # include "bits/stdc++.h"
  2. using namespace std;
  3. constexpr int N = 3e5 + 3;
  4. char str[N], str_new[N << 1];
  5. int main() {
  6. ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  7. int n;
  8. cin >> n;
  9. unordered_map<unsigned long long, int> mp;
  10. unordered_map<unsigned long long, int> mp2;
  11. unordered_map<unsigned long long, bool> vis[6];
  12. unordered_map<unsigned long long, bool> vis2[6];
  13. int ans = 0;
  14. str_new[0] = '!';
  15. str_new[1] = '@';
  16. for(int i = 1; i <= n; ++i) {
  17. cin >> str + 1;
  18. int len = strlen(str + 1);
  19. int len_new = 1;
  20. for(int j = 1; j <= len; ++j) {
  21. str_new[++len_new] = str[j];
  22. str_new[++len_new] = '@';
  23. }
  24. str_new[++len_new] = '#';
  25. int r = 0, center;
  26. vector<int> p(len_new + 1 << 1);
  27. vector<int> pos;
  28. for(int j = 1; j <= len_new; ++j) {
  29. p[j] = (j < r) ? min(p[(center << 1) - j], r - j) : 1;
  30. while(str_new[j - p[j]] == str_new[j + p[j]]) ++p[j];
  31. if(r < j + p[j]) {
  32. r = j + p[j];
  33. center = j;
  34. }
  35. if(p[j] > 1) pos.push_back(j);
  36. }
  37. constexpr unsigned long long base = 122777, mod = 91815541, mod2 = 19260817; // hash value, which is indescibable
  38. vector<unsigned long long> h(len + 1), b(len + 1), h2(len + 1), b2(len + 1);
  39. b[0] = 1, b2[0] = 1;
  40. for(int i = 1; i <= len; ++i) {
  41. h[i] = (h[i - 1] * base % mod + (unsigned long long) str[i]) % mod;
  42. h2[i] = (h2[i - 1] * base % mod2 + (unsigned long long) str[i]) % mod2;
  43. b[i] = b[i - 1] * base % mod;
  44. b2[i] = b2[i - 1] * base % mod2;
  45. }
  46. auto hash = [&](int l, int r) -> unsigned long long {
  47. return (h[r] - h[l - 1] * (unsigned long long)b[r - l + 1] % mod + mod) % mod;
  48. };
  49. auto hash2 = [&](int l, int r) -> unsigned long long { // double hash reduces chance and thus improves accuracy
  50. return (h2[r] - h2[l - 1] * (unsigned long long)b2[r - l + 1] % mod2 + mod2) % mod2;
  51. };
  52. for(auto j : pos) {
  53. int len = p[j];
  54. while(len) {
  55. if((j - len + 2 >> 1) > (j + len - 2 >> 1)) break; // from several manual simulations, we'll find that the palindrome string centered on i in the new string is (i - p[i】 + 2) / 2 ---> (i + p[i] - 2) / 2 in the corresponding position in the original string
  56. unsigned long long sub_str_1 = hash( (j - len + 2 >> 1), (j + len - 2 >> 1) );
  57. unsigned long long sub_str_2 = hash2( (j - len + 2 >> 1), (j + len - 2 >> 1) );
  58. if(vis[i][sub_str_1] == true && vis2[i][sub_str_2] == true) break;
  59. vis[i][sub_str_1] = vis2[i][sub_str_2] = true;
  60. ++mp[sub_str_1], ++mp2[sub_str_2];
  61. if(mp[sub_str_1] >= n && mp2[sub_str_2] >= n) ++ ans;
  62. len -= 2; // manachar only directly finds the longest palindrome string, but the string may contain other substrings
  63. if(len < 0) break;
  64. }
  65. }
  66. }
  67. cout << ans;
  68. return 0;
  69. }
  70. /*
  71. 9999
  72. abcba
  73. abcccba
  74. */

"蔚来杯"2022牛客暑期多校训练营9 G Magic Spells【马拉车+哈希】的更多相关文章

  1. 蔚来杯2022牛客暑期多校训练营5 ABCDFGHK

    比赛链接 A 题解 知识点:图论,dp. 暴力建图,连接所有点的双向通路,除了原点是单向的,并且把路径长度作为权值. 随后,从原点出发(\(f[0] = 0\),其他点负无穷,保证从原点出发),按照权 ...

  2. 蔚来杯2022牛客暑期多校训练营6 ABGJM

    比赛链接 A 题解 知识点:数学,构造. 题目要求构造一个长为 \(m\) 的序列 \(c\) ,\(m\) 自选,使得 \(c\) 的无限循环序列 \(b\) 中任意连续 \(a_i\) 个数中都存 ...

  3. 蔚来杯2022牛客暑期多校训练营7 CFGJ

    比赛链接 C 题解 方法一 知识点:思维. 先统计没有出现的数,每个都可以随便放,所以作为补位用的. 将原数组左移一位作为预定的答案数组,然后开始检查.如果和原数组一样,则用补位数字填充,如果不一样就 ...

  4. 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题)

    layout: post title: 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题) author: "luowentaoaa" c ...

  5. 2021牛客暑期多校训练营3 J 思维

    传送门 J-Counting Triangles_2021牛客暑期多校训练营3 (nowcoder.com) 题目 Goodeat finds an undirected complete graph ...

  6. B-xor_2019牛客暑期多校训练营(第四场)

    题意 给出n个数组(每组数个数不定),m个询问 l, r, x 序号在区间\([l,r]\)的每个数组是否都可以取出任意个数异或出x 题解 判断一个数组能否异或出x,是简单的线性基问题 判断多个线性基 ...

  7. 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)

    题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9:  对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可.     后者mod=1e9,5才 ...

  8. 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...

  9. 2019牛客暑期多校训练营(第一场) B Integration (数学)

    链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...

随机推荐

  1. ElasticSearch7.3学习(二十九)----聚合实战之使用Java api实现电视案例

    一.数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期字段 PUT /tvs PUT /tvs/_mapping { "properties": { "price& ...

  2. python自动将新生成的报告作为附件发送并进行封装

    发送报告作为自动化部署来讲是一个重要的环节,废话不多说直接上代码吧,如果想更细致的了解内容查阅本博主上篇基本发送文章 特别叮嘱一下:SMTP协议默认端口25,qq邮箱SMTP服务器端口是465 别出丑 ...

  3. 程序分析与优化 - 7 静态单赋值(SSA)

    本章是系列文章的第七章,终于来到了鼎鼎大名的SSA,SSA是编译器领域最伟大的发明之一,也是影响最广的发明. 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处.周荣 ...

  4. MYSQL中IF IN语句

    以下代码摘自后台管理系统中的一部分SQL语句: 当取数状态为1或2时,才展示取数时间,否则,取数时间展示为空 当申报状态为2.3.4或5时,才展示申报时间,否则,申报时间展示为空 select A.Q ...

  5. Linux YUM yum-utils 模块详解

    yum-utils 详解 yum-utils是yum的工具包集合,由不同的作者开发,使yum使用起来更加方便和强大.包括:debuginfo-install,find-repos-of-install ...

  6. 【微服务专题之】.Net6下集成消息队列上-RabbitMQ

    ​ 微信公众号:趣编程ACE关注可了解更多的.NET日常实战开发技巧,如需源码 请公众号后台留言 源码;[如果觉得本公众号对您有帮助,欢迎关注] .Net中RabbitMQ的使用 [微服务专题之].N ...

  7. NC20806 区区区间间间

    NC20806 区区区间间间 题目 题目描述 给出长度为n的序列a,其中第i个元素为 \(a_i\),定义区间(l,r)的价值为 \(v_{l,r} = max(a_i - a_j | l \leqs ...

  8. ArrayList源码深度剖析,从最基本的扩容原理,到魔幻的迭代器和fast-fail机制,你想要的这都有!!!

    ArrayList源码深度剖析 本篇文章主要跟大家分析一下ArrayList的源代码.阅读本文你首先得对ArrayList有一些基本的了解,至少使用过它.如果你对ArrayList的一些基本使用还不太 ...

  9. 【docker专栏5】详解docker镜像管理命令

    一.国内Docker镜像仓库 由于大家都知道的原因,从国外的docker 仓库中pull镜像的下载速度实际上是很慢的.国内的一些一线厂商以及docker官方都在国内免费提供了一些docker镜像仓库, ...

  10. C语言-直接排序

    #include<stdio.h> #define MAXSIZE 100 typedef int KeyType; typedef struct { KeyType key; }Reco ...