STL --- UVA 123 Searching Quickly
UVA - 123 Searching Quickly
Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19296
Mean:
有一个字符串集合Ignore,还有一个文本集合TXT,在TXT中除了Ignore中的单词外其他的都是关键字,现在要你根据这些关键字来给TXT文本排序(根据关键字的字典)。
注意:一行TXT文本中含多少个关键字就需要排多少次序,如果关键字的字典序相同则按照先后顺序来排。
analyse:
这题STL用的比较多,使用STL可以很好的解决去重、排序等一序列问题,而手动实现的话就稍微繁琐一点,思路并不难。
Time complexity: O(n)
Source code:
1. STL版:
/* * this code is made by crazyacking * Problem: UVA 123 * Verdict: Accepted * Submission Date: 2015-05-03-20.39 * Time: 0MS * Memory: 0KB */ #include <queue> #include <cstdio> #include <string> #include <stack> #include <cmath> #include <set> #include <map> #include <cstdlib> #include <climits> #include <vector> #include <iostream> #include <algorithm> #include <cstring> #define MAXN 1000010 #define LL long long #define ULL unsigned long long using namespace std;string tmp; set<string> ignore; multimap<string,string> mp;int main() { // freopen("C:\\Users\\crazyacking\\Desktop\\cin.txt","r",stdin); // freopen("C:\\Users\\crazyacking\\Desktop\\cout.txt","w",stdout); ios_base::sync_with_stdio(false);cin.tie(0);int len;string ig;while(getline(cin,ig) && ig!="::")ignore.insert(ig);mp.clear();while(getline(cin,tmp)){len=tmp.length();for(int i=0;i<len;++i)tmp[i]=tolower(tmp[i]);string t1;int cnt;for(int i=0;i<len;++i){if(tmp[i]!=' '){cnt=0;int j;t1.clear();for(j=i;j<len;++j){if(tmp[j]!=' '){t1.insert(cnt,1,tmp[j]);cnt++;tmp[j]=toupper(tmp[j]);}else break;}i=j;if(ignore.find(t1)==ignore.end())mp.insert(pair<string,string>(t1,tmp));for(j=0;j<len;++j){tmp[j]=tolower(tmp[j]);}}}}multimap<string,string> ::iterator iter=mp.begin();for(;iter!=mp.end();++iter){cout<<(iter->second)<<endl;}return 0; } /**/
View Code
2.手动模拟:
/* * this code is made by crazyacking * Verdict: Accepted * Submission Date: 2015-05-03-21.52 * Time: 0MS * Memory: 1347KB */ #include <queue> #include <cstdio> #include <string> #include <stack> #include <cmath> #include <set> #include <map> #include <cstdlib> #include <climits> #include <vector> #include <iostream> #include <algorithm> #include <cstring> #define MAXN 1000010 #define LL long long using namespace std;struct node {int n;char word[20][1500];void fun(char *str){int len=strlen(str);for(int i=0;i<len;i++) str[i]=tolower(str[i]);n=0;char *strPtr=strtok(str," ");while(strPtr!=NULL){strcpy(word[n++],strPtr);strPtr=strtok(NULL," ");}} }title[300]; void output(int t,int pos) {int len=strlen(title[t].word[pos]);for(int i=0;i<len;i++){title[t].word[pos][i]=toupper(title[t].word[pos][i]);}for(int i=0;i<title[t].n;i++){if(i==0){printf("%s",title[t].word[i]);}else printf(" %s",title[t].word[i]);}for(int i=0;i<len;i++){title[t].word[pos][i]=tolower(title[t].word[pos][i]);}puts(""); }int main() {ios_base::sync_with_stdio(false);cin.tie(0);int n=0;set<string> ig,key;set<string>::iterator it;char temp[20],str[10005];while(scanf("%s",temp)!=EOF){if(strcmp(temp,"::")==0) break;ig.insert(temp);}while(gets(str)){title[n].fun(str);for(int i=0;i<title[n].n;i++){bool flag=false;for(it=ig.begin();it!=ig.end();it++){if(strcmp(title[n].word[i],(*it).c_str())==0){flag=true;break;}}if(!flag) key.insert(title[n].word[i]);}n++;}for(it=key.begin();it!=key.end();it++){for(int i=0;i<n;i++){for(int j=0;j<title[i].n;j++){if(strcmp((*it).c_str(),title[i].word[j])==0){output(i,j);}}}}return 0; } /**/
View Code
STL --- UVA 123 Searching Quickly相关推荐
- uva - 123 - Searching Quickly
题目大意: 输入一系列要被忽视的单词和题目,题目中除了要被忽视的单词外其他的都是关键字.把关键字忽略大小写按字典序排序.再把题目按照关键字的字典序输出.有几个关键字输出几次(看题目中样例).输出的时候 ...
- UVa Problem 123 - Searching Quickly
// UVa Problem 123 - Searching Quickly // Verdict: Accepted // Submission Date: 2012-01-04 // UVa Ru ...
- Brute Force STL --- UVA 146 ID Codes
ID Codes Problem's Link:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&a ...
- 湖南省第八届大学生程序设计大赛原题 D - 平方根大搜索 UVA 12505 - Searching in sqrt(n)...
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30746#problem/D D - 平方根大搜索 UVA12505 - Searchin ...
- [STL] UVA 10815 安迪的第一个字典 Andy's First Dictionary
1.set 集合 哦....对了,set有自动按照字典序排序功能..... 声明和插入操作 #include <cstdio> #include <vector> #inclu ...
- UVa 11044 - Searching for Nessy
求n*m的网格中有多少九宫格,公式:(n/3)*(m/3). 代码: 1 #include<iostream> 2 3 using namespace std; 4 5 int main( ...
- 提取了下刘汝佳推荐的题号...
今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started 10055 - Hashmat the Brave Warrior ...
- UVa Online Judge 工具網站
UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...
- 初学者acm的练习题指南
上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1. <!--[endif]-->Programming Bas ...
最新文章
- C++:vector容器中使用pair该如何访问成员
- python2.7可以同时连接两个数据库吗
- TCP的三次握手与四次挥手图文
- python向空列表添加列表_Python列表核心知识点汇总
- glob,正则表达式元字符,扩展正则表达式总结
- 为什么腾讯云要自研云原生数据库 CynosDB?
- STC学习:可同步显示歌词的ABC英文歌
- MySQL---行转列
- 崂山道士、Harry Potter和人脸识别
- FFmpeg+SDL纯视频播放器
- 各种激活函数求导公式
- 数学中的圆周率符号怎么输入
- C语言数组 一维数组篇
- HOW2J.CN - 学习笔记(类和对象)
- 为什么在我眼里你是一只傻逼——傻逼“常所用”句型之(3)——“没看过”“但是其中必定”...
- 手机短信验证码开发流程
- E22 LoRa模块透传 定点传输 WOR模式测试与MicroPython应用
- 深度学习之 自然语言处理BERT
- JS 日期转换成时间戳
- 微信小程序 苹果手机 https wx.request 不反应