当前位置: 首页 > news >正文

CF1202E You Are Given Some Strings...

首先考虑转化为枚举分界点 \(i\),令 \(f_i\) 表示 \(s_j\)\(t_{[l, i]}\) 匹配的 \(j\) 的个数,\(g_i\) 表示 \(s_j\)\(t_{[i, r]}\) 匹配的 \(j\) 的个数,则答案为 \(\sum f_i \times g_{i + 1}\)\(f\) 的话,记一下其 fail 树上到根节点的作为某字符串结尾的节点的个数。\(g\) 的话考虑翻转一下 \(s, t\) 就变成了和求 \(f\) 一样的。时间复杂度 \(\mathcal{O}(n + m)\)

点击查看代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
// typedef __int128 i128;
typedef pair<int, int> pii;
const int N = 2e5 + 10, mod = 998244353;
template<typename T>
void dbg(const T &t) { cout << t << endl; }
template<typename Type, typename... Types>
void dbg(const Type& arg, const Types&... args) {cout << arg << ' ';dbg(args...);
}
namespace Loop1st {
int n, f[N], g[N];
string s, t;
struct ACAM {int tot, son[N][26], fail[N], val[N];void insert(string s) {int u = 0;for (char c : s) {int &v = son[u][c - 'a'];if (!v) v = ++tot;u = v;}val[u]++;}void build() {queue<int>q;for (int i = 0; i < 26; i++) if (son[0][i]) q.push(son[0][i]);while (!q.empty()) {int u = q.front(); q.pop();for (int i = 0; i < 26; i++) {int &v = son[u][i];if (v) {fail[v] = son[fail[u]][i];val[v] += val[fail[v]];q.push(v);} else v = son[fail[u]][i];}}}void query(string s, int *f) {int u = 0;for (int i = 0; i < (int)s.size(); i++) {u = son[u][s[i] - 'a'];f[i] = val[u];}}
} acam1, acam2;
void main() {cin >> t;cin >> n;for (int i = 1; i <= n; i++) {cin >> s;acam1.insert(s);reverse(s.begin(), s.end());acam2.insert(s);}acam1.build(); acam2.build();acam1.query(t, f);reverse(t.begin(), t.end());acam2.query(t, g);ll ans = 0;int len = (int)t.size();for (int i = 0; i + 1 < len; i++) {ans += (ll)f[i] * g[len - i - 2];}cout << ans << '\n';
}}
int main() {// freopen("data.in", "r", stdin);// freopen("data.out", "w", stdout);ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int T = 1;// cin >> T;while (T--) Loop1st::main();return 0;
}
// start coding at 19:39
// finish debugging at 20:04
http://www.jsqmd.com/news/194497/

相关文章:

  • 2026最新银条饰品生产公司top5推荐,湖南郴州等地优质工厂/供货商解析及选择指南 - 全局中转站
  • 2026最新洗衣片工厂top5推荐榜,广东广州等地优质公司及批发源头厂家深度解析/选择指南 - 全局中转站
  • PyBullet十年演进(2015–2025)
  • 2026最新银饰生产公司top5推荐,湖南郴州等地优质工厂/供货商解析及选择指南 - 全局中转站
  • 基于非对称纳什谈判的多微网电能共享运行优化:MATLAB 实现探秘
  • 风光储互补发电系统直流微网:Simulink建模与控制策略探索
  • 卡尔曼滤波十年演进(2015–2025)
  • Nginx 七大应用场景(附配置)
  • 从T5到Sentence-BERT:打造下一代个性化推荐系统 - EmbSum深度解析
  • 开源与AI技术民主化:打破垄断的未来
  • AI 把内容做成了 “泔水”,但你的 “人味儿” 正在变贵
  • [转]Nginx 五大绝技:深入解剖与最佳实践
  • 盒马鲜生礼品卡回收有哪些方法?把睡大觉的闲置卡变成零花钱 - 京顺回收
  • 计算机毕业设计,基于springboot的高校心理教育辅导系统,附源码+数据库+论文+开题,包远程安装调试运行
  • 构造数列【牛客tracker 每日一题】
  • C进阶专题:数据的存储
  • Gemini CLI 终极使用指南
  • “彩光”的园区手记:解决真的问题,保持真的“简单”
  • TC387开发环境调试找不到UDE接口
  • 极限编程(ExtremeProgramming)是什么?
  • 如果不结婚,你的人生会变差吗?看完这篇我释怀了
  • Scrum是什么?
  • 大数据与人工智能背景下的影像组学:肾脏肿瘤精准诊疗新范式
  • 重组蛋白 His 标签(His-tag)原理与应用详解:亲和纯化与检测技术全解析
  • AI辅助企业并购尽职调查:自动化文档分析与风险识别
  • Serilog 日志库简单实践(四)消息队列 Sinks(.net8)
  • 2026最新银杯生产公司top5推荐,湖南郴州等地优质工厂/供货商解析及选择指南 - 全局中转站
  • 用Neo4j构建医疗知识图谱加速推理
  • 重磅!TRAE 中国版 SOLO 全量免费开放,AI 驱动开发迎来全民时代
  • 数据结构2------线段树