hdu-1277--字典树坑题

hdu-1227

字典树,坑题!!当字典树练手

Problem Description

我们大家经常用google检索信息,但是检索信息的程序是很困难编写的;现在请你编写一个简单的全文检索程序。
问题的描述是这样的:给定一个信息流文件,信息完全有数字组成,数字个数不超过60000个,但也不少于60个;再给定一个关键字集合,其中关键字个数不超过10000个,每个关键字的信息数字不超过60个,但也不少于5个;两个不同的关键字的前4个数字是不相同的;由于流文件太长,已经把它分成多行;请你编写一个程序检索出有那些关键字在文件中出现过。

Input

第一行是两个整数M,N;M表示数字信息的行数,N表示关键字的个数;接着是M行信息数字,然后是一个空行;再接着是N行关键字;每个关键字的形式是:[Key No. 1] 84336606737854833158。

Output

输出只有一行,如果检索到有关键字出现,则依次输出,但不能重复,中间有空格,形式如:Found key: [Key No. 9] [Key No. 5];如果没找到,则输出形如:No key can be found !。

Sample Input

20 10
646371829920732613433350295911348731863560763634906583816269
637943246892596447991938395877747771811648872332524287543417
420073458038799863383943942530626367011418831418830378814827
679789991249141417051280978492595526784382732523080941390128
848936060512743730770176538411912533308591624872304820548423
057714962038959390276719431970894771269272915078424294911604
285668850536322870175463184619212279227080486085232196545993
274120348544992476883699966392847818898765000210113407285843
826588950728649155284642040381621412034311030525211673826615
398392584951483398200573382259746978916038978673319211750951
759887080899375947416778162964542298155439321112519055818097
642777682095251801728347934613082147096788006630252328830397
651057159088107635467760822355648170303701893489665828841446
069075452303785944262412169703756833446978261465128188378490
310770144518810438159567647733036073099159346768788307780542
503526691711872185060586699672220882332373316019934540754940
773329948050821544112511169610221737386427076709247489217919
035158663949436676762790541915664544880091332011868983231199
331629190771638894322709719381139120258155869538381417179544
000361739177065479939154438487026200359760114591903421347697[Key No. 1] 934134543994403697353070375063
[Key No. 2] 261985859328131064098820791211
[Key No. 3] 306654944587896551585198958148
[Key No. 4] 338705582224622197932744664740
[Key No. 5] 619212279227080486085232196545
[Key No. 6] 333721611669515948347341113196
[Key No. 7] 558413268297940936497001402385
[Key No. 8] 212078302886403292548019629313
[Key No. 9] 877747771811648872332524287543
[Key No. 10] 488616113330539801137218227609

Sample Output

Found key: [Key No. 9] [Key No. 5]

坑位:文件流字符串长度是6e5才能过!没有No key can be found!的数据!(算了,写都写了)

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <sstream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <iomanip>
#include <stack>using namespace std;typedef long long LL;
const int INF = 0x3f3f3f3f;
const int N = 60005;
const int MOD = 1e9 + 9;#define lson l, m, rt << 14
#define rson m + 1, r, rt << 1 | 1string s;
int tree[N * 10][15], vis[N * 10], pos;
char t[N];
set<int> p;
vector<int> v;
set<int>::iterator pit;
vector<int>::iterator vit;void build(string s1, int num)
{int rt = 0;for(int i = 0;s1[i];++i){int x = s1[i] - '0';if(!tree[rt][x])tree[rt][x] = ++pos;rt = tree[rt][x];}vis[rt] = num;
}void solve(string s1)
{int rt = 0;for(int i = 0;s1[i];++i){int x = s1[i] - '0';if(vis[rt]){if(p.find(vis[rt]) == p.end()){v.push_back(vis[rt]);p.insert(vis[rt]);}return;}if(!tree[rt][x]) return;rt = tree[rt][x];}
}int main()
{int n, m;scanf("%d%d", &n, &m);for(int i = 0;i < n;++i){scanf("%s", t);s += t;}getchar();for(int i = 1;i <= m;++i){int a;scanf("\n[Key No. %d] %s", &a, t);build(t, i);}for(int i = 0;s[i];++i)solve(&s[0] + i);if(p.size()){printf("Found key:");for(vit = v.begin();vit != v.end();++vit)printf(" [Key No. %d]", *vit);}elseprintf("No key can be found!");printf("\n");return 0;
}

转载于:https://www.cnblogs.com/shuizhidao/p/10659536.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Do not mutate vuex store state outside mutation handlers.

组件代码&#xff1a; selectItem(item,index) {this.selectPlay({list: this.songs,index}) }, ...mapActions([selectPlay ]) mutation 代码&#xff1a; [types.SET_PLAYLIST](state, list) {// 1、state.playlist JSON.parse(JSON.stringify(list))// 2、state.playlist …

硅谷企業面臨新的反壟斷枷鎖

硅谷的公司正面臨著加強反壟斷審查的新階段﹐這是對奧巴馬政府加強執法和持續不斷的海外壓力所做出的反應。 對在其行業中佔據主導地位的企業採取更嚴格的立場可能會考驗這些科技業巨頭在布什政府時期採取的政府關係策略。Associated Press奧巴馬政府任命的司法部負責反壟斷執法…

Spring Java配置:会话超时

当您可以使用基于Java的配置开发Spring应用程序时&#xff0c;我们生活在一个美好的时光。 不再有多余的XML代码&#xff0c;只有纯Java代码。 在本文中&#xff0c;我想讨论一个关于Spring应用程序中会话管理的热门话题。 更确切地说&#xff0c;我将以Java配置样式讨论会话超…

怎样去掉警告 log4j:WARN No appenders could be found for logger

最近在作项目的时候&#xff0c;用到了 HttpClient&#xff0c;用它向 HTTP server 发送请求并处理返回的页面数据。 我的应用类间接调用 HttpClient。在运行的时候&#xff0c;程序打印出了如下警告信息&#xff1a; log4j:WARN No appenders could be found for logger log…

这首歌【好听】到哭出来

转载于:https://www.cnblogs.com/Agnel-Cynthia/p/10662886.html

Raect Router 4 的使用 (1)

本文来自于官方文档&#xff0c;属于意译而非直译 基本组件 React Router 有三种类型的组件&#xff0c;分别是&#xff1a;react-router、react-router-dom、react-router-native 你在web 程序中使用了路由组件&#xff0c;那你就应该引入 react-router-dom&#xff1a; im…

分而治之思想

当一个问题的规模很大时&#xff0c;直接求解往往比较困难。对于这类问题&#xff0c;很大一部分是可以采取分而治之的思想来处理的。 分治法是把问题划分成多个子问题来进行处理。这些子问题&#xff0c;在结构上跟原来的问题一样&#xff0c;但是规模比原来的问题要小。如果得…

在Java 8中使用Stream API解析文件

Java 8中到处都有流。只需四处看看&#xff0c;可以肯定地找到它们。 它也适用于java.io.BufferedReader 。 使用Stream API在Java 8中解析文件非常容易。 我有一个要读取的CSV文件。 下面的例子&#xff1a; username;visited jdoe;10 kolorobot;4我的阅读器的一项合同是提供…

诡异的DateTime.TryParseExact方法

老赵在介绍Routing扩展的WebCast中出了点“小状况”&#xff0c;即将DateTime.ToString(“yyyy-MM-dd”)修改为DateTime.ToString(“yyyy/MM/dd”)后&#xff0c;页面中仍然显示为yyyy-MM-dd样式的日期格式。相信看过WebCast的同学都还记得吧。我不解&#xff0c;将老赵代码中D…

【手撸一个ORM】第一步、实体约定和描述

一、约定 数据实体必须实现 IEntity 接口&#xff0c;该接口定义了一个int类型的Id属性&#xff0c;既每个实体必须有一个名称为Id的自增主键。 若数据表的主键列名称不是Id&#xff0c;可以通过 [MyKey("主键列名")] 对该属性进行描述 namespace MyOrm.Commons {pub…

this指向问题(2)

4、显示绑定 指的是apply、bind、call &#xff08;1&#xff09;、apply 和 call 相同点&#xff1a; <1> 这两个方法的用途是在特定的作用域中调用函数&#xff0c;实际上等于设置函数体内 this 对象的值&#xff0c;真正强大之处在于扩充函数赖以运行的作用域 <2&g…

将要被淘汰的8种人

将要被淘汰的8种人 从朋友的空间你发现了这篇文章&#xff0c;觉得写的很有道理&#xff0c;把它转过来&#xff0c;以便时时提醒一下自己&#xff1a; 不景气的社会&#xff0c;一定会淘汰不争气的人。如何不被淘汰&#xff0c;只要你不在这八种人之内。如果你在其中之内&…

学习 AngularJs 终于有点进步了。

很庆幸&#xff0c;自己在7月股市最低点的时候上车了&#xff0c;&#xff0c;开始了在股市的第一票&#xff0c;现在还不知道会不会赚&#xff0c;虽然买的核电有点偏高&#xff0c;但是还是对国家大工业大工程有信心的&#xff0c;按照今天的走势应该赚不少&#xff0c;希望是…

泽西岛2.9及更高版本中的声明式链接

几个星期前几个月前&#xff0c;我正在寻找如何为Oracle Cloud项目设计新的REST API。 我计划要做的事情之一就是使用Marc Hadley在Jersey 1.x中创建的声明性链接注入。 可悲的是这并没有被转发移植然而&#xff0c;这样一个快速的聊天项目带动和我承担了使代码最新的小中型工作…

使用HTML5技术控制电脑或手机上的摄像头

移动设备和桌面电脑上的客户端API起初并不是同步的。最初总是移动设备上先拥有某些功能和相应的API&#xff0c;但慢慢的&#xff0c;这些API会出现在桌面电脑上。其中一个应用接口技术就是getUserMedia API&#xff0c;它能让应用开发者访问用户的摄像头或内置相机。下面就展示…

好的,每个接触Java字节码的人

Oracle诉Google一案认为&#xff0c;复制Java API的结构&#xff0c;序列和组织是侵犯版权的行为。 侵犯版权不仅是复制行为&#xff0c;而且还适用于拥有该作品副本的所有中间方。 那就是编写/编译任何JVM语言的人&#xff0c;以及在他们拥有的任何设备上都有JAR文件的人&…

手动安装boost库

手动安装boost库。 1,下载boost库&#xff0c;解压到目录。我解压的目录为D:\thirdParty。2&#xff0c;build bjam工具。 转到 D:\thirdParty\boost_1_37_0\tools\jam\src目录&#xff0c;执行build.bat即可生成bin.ntx86目录&#xff0c;里面有个bjam.exe&#xff0c;以后bui…

iSlide——图标库、图示库的用法

iSlide中&#xff0c;有一个“图示库”功能&#xff0c;主要功能是同时排列多块文字或多张图片。单击插图库&#xff0c;会弹出一个新的对话框。从中&#xff0c;可以选择权限、分类、数量数据和样式&#xff0c;也可以直接搜索。 下面就举一个例子&#xff1a;我要开一个班队会…

NSMutableDictionary中 setValue和setObject的区别

对于- (void)setValue:(id)value forKey:(NSString *)key;函数 官方解释如下 Send -setObject:forKey: to the receiver, unless the value is nil, in which case send -removeObject:forKey: 这就很明确的说明了setValue&#xff1a;forKey&#xff1a;中value能够为nil&…

IFrame标签的两个用法介绍

1. 作为弹出层铺底覆盖 大家如果做过那种黑色遮罩盖住整张页面&#xff0c;而碰巧用户用的是IE6&#xff0c;更碰巧的是页面上有select元素&#xff0c;那就有得头疼了&#xff08;原理就不在这里赘述了&#xff09;。我们会发现弹出的DIV没法遮住select, 轮到我们的iframe出场…