1077 Kuchiguse
时间:2020-04-14
本文章向大家介绍1077 Kuchiguse,主要包括1077 Kuchiguse使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
常规写法:
#include <iostream> #include <vector> #include <cstring> #include <stack> #include <unordered_set> #include <queue> #include <cmath> #define LL long long using namespace std; int main(){ int N; cin>>N; getchar(); string s; getline(cin,s); int prop=s.size(); for(int i=2;i<=N;i++){ string s1; getline(cin,s1); prop=min(prop,(int)s1.size()); for(int len=prop;len>=0;len--){ if(s.substr(s.size()-len,len)==s1.substr(s1.size()-len,len)){ prop=len; break; } } } if(prop>0) cout<<s.substr(s.size()-prop,prop); else cout<<"nai"; return 0; }
用Trie:
#include <iostream> #include <vector> #include <cstring> #include <stack> #include <unordered_set> #include <queue> #include <cmath> #include <unordered_map> #include <algorithm> #define LL long long using namespace std; struct Trie{ unordered_map<char,Trie*> children; }; Trie* root; void buildTrie(string s){ Trie* cur=root; for(char c:s){ if(cur->children.find(c)==cur->children.end()){ cur->children[c]=new Trie(); } cur=cur->children[c]; } } int main(){ int N; cin>>N; getchar(); string s; root=new Trie(); for(int i=1;i<=N;i++){ getline(cin,s); reverse(s.begin(),s.end()); buildTrie(s); } int res=0; Trie* cur=root; while(true){ if(cur->children.size()!=1) break; res++; auto iter=cur->children.begin(); cur=iter->second; } if(res==0) printf("nai"); else { reverse(s.begin(),s.end()); cout<<s.substr(s.size()-res,res); } return 0; }
原文地址:https://www.cnblogs.com/FEIIEF/p/12700076.html
- 1131: [POI2008]Sta
- 3172: [Tjoi2013]单词
- WebApiThrottle限流框架使用手册
- webpack学习(六)打包压缩js和css
- 1051: [HAOI2006]受欢迎的牛
- 1572: [Usaco2009 Open]工作安排Job
- 深海中的STL—mt19937
- 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御
- POJ1201 Intervals(差分约束)
- 【NLP】十分钟快览自然语言处理学习总结
- MVC5 网站开发之九 网站设置
- Redis安全小结
- webpack学习(七)打包压缩图片
- POJ1275 Cashier Employment(差分约束)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android升级支持库版本遇到的两个问题详解
- Android开发使用Drawable绘制圆角与圆形图案功能示例
- Android开发中自定义ProgressBar控件的方法示例
- Android 使用自定义RecyclerView控件实现Gallery效果
- Android开发中GridView用法示例
- React Native中Android物理back键按两次返回键即退出应用
- Android仿简书搜索框效果的示例代码
- Android 自定义 HorizontalScrollView 打造多图片OOM 的横向滑动效果(实例代码)
- Android开发自定义TextView省略号样式的方法
- Android开发中获取View视图宽与高的常用方法小结
- Android判断字符串中是否含字母、中文或数字
- 利用Kotlin开发你的第一个Android应用
- Android Picasso使用高斯模糊处理的示例代码
- Android RecyclerView打造悬浮效果的实现代码
- Android选择图片或视频进行循环播放