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

P3879 [TJOI2010] 阅读理解- 字典树

题面

分析

将所有单词存入字典树,重点值怎么判断在哪一行出现过,对于字典树查询的判断字符串是否存在的数组可以开成二维,也就是在查询到某个字符串存在后,再通过循环判断每一层是否存在。

代码
#include <bits/stdc++.h>#define int long longusing namespace std;const int N = 5e5 + 10;int son[N][30];
bitset<1010> vis[N];
int idx;
int n;void insert(string s, int i) {int p = 0;for(int i = 0; i < s.size(); i ++) {int c = s[i] - 'a';if(!son[p][c]) son[p][c] = ++ idx;p = son[p][c];}vis[p][i] = 1;
}vector<int> query(string s) {int p = 0;vector<int> ans;for(int i = 0; i < s.size(); i ++) {int c = s[i] - 'a';if(!son[p][c]) return ans;p = son[p][c];}for(int i = 1; i <= n; i ++) {if(vis[p][i]) ans.push_back(i);}return ans;
}signed main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> n;for(int i = 1; i <= n; i ++) {int l;cin >> l;for(int j = 0; j < l; j ++) {string s;cin >> s;insert(s, i);}}int m;cin >> m;while(m --) {string s;cin >> s;vector<int> ans = query(s);for(int i = 0; i < ans.size(); i ++) cout << ans[i] << ' ';cout << "\n";}
}
http://www.lryc.cn/news/234685.html

相关文章:

  • upgrade k8s (by quqi99)
  • CronExpression
  • 释放机器人潜力,INDEMIND深耕底层技术
  • 【ES6标准入门】JavaScript中的模块Module语法的使用细节:export命令和imprt命令详细使用,超级详细!!!
  • 流量2----2
  • 人工智能发展前景
  • 编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。
  • AcWing 4520:质数 ← BFS
  • 00、计算机视觉入门与调优简介
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • 多媒体ffmpeg学习教程
  • SELinux零知识学习十五、SELinux策略语言之客体类别和许可(9)
  • OpenSign:安全可靠的电子签名解决方案 | 开源日报 No.76
  • Linux | 进程间通信
  • Vue.js正式环境中配置多个请求的URL
  • 简单的 UDP 网络程序
  • 人工智能-深度学习之文本预处理
  • 【Java 进阶篇】插上翅膀:JQuery 插件机制详解
  • 手动编译GDB
  • 竞赛选题 深度学习花卉识别 - python 机器视觉 opencv
  • 替换SlowFast中Detectron2为Yolov8
  • 轻量化网络--MobileNet V1
  • gittee启动器
  • Spark数据倾斜_产生原因及定位处理办法_生产环境
  • 2023OceanBase年度发布会后,有感
  • ubuntu18.04中代码迁移到20.04报错
  • QQ五毛项目记
  • 小程序实现登录持久化
  • 2023年亚太杯数学建模思路 - 案例:ID3-决策树分类算法
  • C复习-输入输出函数+流