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相关推荐

  1. uva - 123 - Searching Quickly

    题目大意: 输入一系列要被忽视的单词和题目,题目中除了要被忽视的单词外其他的都是关键字.把关键字忽略大小写按字典序排序.再把题目按照关键字的字典序输出.有几个关键字输出几次(看题目中样例).输出的时候 ...

  2. UVa Problem 123 - Searching Quickly

    // UVa Problem 123 - Searching Quickly // Verdict: Accepted // Submission Date: 2012-01-04 // UVa Ru ...

  3. Brute Force STL --- UVA 146 ID Codes

     ID Codes  Problem's Link:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&a ...

  4. 湖南省第八届大学生程序设计大赛原题 D - 平方根大搜索 UVA 12505 - Searching in sqrt(n)...

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30746#problem/D D - 平方根大搜索 UVA12505 - Searchin ...

  5. [STL] UVA 10815 安迪的第一个字典 Andy's First Dictionary

    1.set 集合 哦....对了,set有自动按照字典序排序功能..... 声明和插入操作 #include <cstdio> #include <vector> #inclu ...

  6. UVa 11044 - Searching for Nessy

    求n*m的网格中有多少九宫格,公式:(n/3)*(m/3). 代码: 1 #include<iostream> 2 3 using namespace std; 4 5 int main( ...

  7. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  8. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  9. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

最新文章

  1. C++:vector容器中使用pair该如何访问成员
  2. python2.7可以同时连接两个数据库吗
  3. TCP的三次握手与四次挥手图文
  4. python向空列表添加列表_Python列表核心知识点汇总
  5. glob,正则表达式元字符,扩展正则表达式总结
  6. 为什么腾讯云要自研云原生数据库 CynosDB?
  7. STC学习:可同步显示歌词的ABC英文歌
  8. MySQL---行转列
  9. 崂山道士、Harry Potter和人脸识别
  10. FFmpeg+SDL纯视频播放器
  11. 各种激活函数求导公式
  12. 数学中的圆周率符号怎么输入
  13. C语言数组 一维数组篇
  14. HOW2J.CN - 学习笔记(类和对象)
  15. 为什么在我眼里你是一只傻逼——傻逼“常所用”句型之(3)——“没看过”“但是其中必定”...
  16. 手机短信验证码开发流程
  17. E22 LoRa模块透传 定点传输 WOR模式测试与MicroPython应用
  18. 深度学习之 自然语言处理BERT
  19. JS 日期转换成时间戳
  20. 微信小程序 苹果手机 https wx.request 不反应

热门文章

  1. 云优YUNUCMS企业网站管理系统
  2. WP百度搜索推送管理插件
  3. 某角数卡发卡网程序V1.7.1版本开源源码
  4. RabbitMQ入门学习系列(五) Exchange的Direct类型
  5. Swift中文教程(十八) 类型检查
  6. PHP下载CSS文件中的图片
  7. golang安装grpc,timeout问题
  8. windows10配置make命令
  9. Ethercat解析(七)之主站框架
  10. 使用U盘安装Fedora14 32bit操作系统(参考自www.osyunwei.com)