Trending Topic

Time limit: 1.000 seconds

Imagine you are in the hiring process for a company whose principal activity is the analysis of information in the Web. One of the tests consists in writing a program for maintaining up to date a set of trending topics. You will be hired depending on the efficiency of your solution. They provide you with text from the most active blogs. The text is organised daily and you have to provide the sorted list of the N most frequent words during the last 7 days, when asked.

INPUT

Each input file contains one test case. The text corresponding to a day is delimited by tag <text>. Queries of top N words can appear between texts corresponding to two different days. A top N query appears as a tag like <top 10 />. In order to facilitate you the process of reading from input, the number always will be delimited by white spaces, as in the sample.

Notes:

• All words are composed only of lowercase letters of size at most 20.

• The maximum number of different words that can appear is 20000.

• The maximum number of words per day is 20000.

• Words of length less than four characters are considered of no interest.

• The number of days will be at most 1000.

• 1 ≤ N ≤ 20

OUTPUT

The list of N most frequent words during the last 7 days must be shown given a query. Words must appear in decreasing order of frequency and in alphabetical order when equal frequency. There must be shown all words whose counter of appearances is equal to the word at position N. Even if the amount of words to be shown exceeds N.

SAMPLE INPUT

<text> imagine you are in the hiring process of a company whose main business is analyzing the information that appears in the web </text>

<text> a simple test consists in writing a program for maintaining up to date a set of trending topics </text>

<text> you will be hired depending on the efficiency of your solution </text>

<top 5 />

<text> they provide you with a file containing the text corresponding to a highly active blog </text>

<text> the text is organized daily and you have to provide the sorted list of the n most frequent words during last week when asked </text>

<text> each input file contains one test case the text corresponding to a day is delimited by tag text </text>

<text> the query of top n words can appear between texts corresponding to two different days </text>

<top 3 />

<text> blah blah blah blah blah blah blah blah blah please please please </text>

<top 3 />

SAMPLE OUTPUT
<top 5>

analyzing 1

appears 1

business 1

company 1

consists 1

date 1

depending 1

efficiency 1

hired 1

hiring 1

imagine 1

information 1

main 1

maintaining 1

process 1

program 1

simple 1

solution 1

test 1

that 1

topics 1

trending 1

whose 1

will 1

writing 1

your 1

</top>

<top 3>

text 4

corresponding 3

file 2

provide 2

test 2

words 2

</top>

<top 3>

blah 9

text 4

corresponding 3

please 3

</top>

解题:极其蛋疼狗血的破题目。

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <climits>
#include <vector>
#include <queue>
#include <cstdlib>
#include <string>
#include <set>
#include <map>
#include <stack>
#define LL long long
#define pii pair<int,int>
#define INF 0x3f3f3f3f
using namespace std;
struct cao{
string word;
int cnt;
cao(string x = "*",int y = ){
word = x;
cnt = y;
}
};
map<string,int>mp;
string tmp;
vector<string>v[];
cao nima[];
bool cmp(const cao &x,const cao &y){
if(x.cnt == y.cnt) return x.word < y.word;
return x.cnt > y.cnt;
}
int main() {
mp.clear();
int n = ,i,j,ask,tot;
while(cin>>tmp){
if(tmp == "<text>"){
j = n%;
for(i = ; i < v[j].size(); i++) mp[v[j][i]]--;
v[j].clear();
while(cin>>tmp){
if(tmp == "</text>") break;
if(tmp.length() >= ){
mp[tmp]++;
v[j].push_back(tmp);
}
}
n++;
}else{
cin>>ask>>tmp;
tot = ;
for(map<string,int>::iterator it = mp.begin();it != mp.end(); it++)
nima[tot++] = cao(it->first,it->second);
sort(nima,nima+tot,cmp);
printf("<top %d>\n",ask);
for(i = ,j = ; i < ask; i++)
printf("%s %d\n",nima[i].word.c_str(),nima[i].cnt);
for(j = i,i--; j < tot && nima[j].cnt == nima[i].cnt; j++)
printf("%s %d\n",nima[j].word.c_str(),nima[j].cnt);
puts("</top>");
}
}
return ;
}

UVA 12686 Trending Topic的更多相关文章

  1. SWERC13 Trending Topic

    map暴力. .. Imagine you are in the hiring process for a company whose principal activity is the analys ...

  2. USER STORIES AND USE CASES - DON’T USE BOTH

    We’re in Orlando for a working session as part of the Core Team building BABOK V3 and over dinner th ...

  3. [转载]Three Trending Computer Vision Research Areas, 从CVPR看接下来几年的CV的发展趋势

    As I walked through the large poster-filled hall at CVPR 2013, I asked myself, “Quo vadis Computer V ...

  4. UVA 607 二十二 Scheduling Lectures

    Scheduling Lectures Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submi ...

  5. UVa 10006 - Carmichael Numbers

    UVa 10006 - Carmichael Numbers An important topic nowadays in computer science is cryptography. Some ...

  6. Kafka 如何读取offset topic内容 (__consumer_offsets)

    众所周知,由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsets topic,并 ...

  7. Kafka如何创建topic?

    Kafka创建topic命令很简单,一条命令足矣:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-facto ...

  8. Kafka0.8.2.1删除topic逻辑

    前提条件: 在启动broker时候开启删除topic的开关,即在server.properties中添加:  delete.topic.enable=true 命令: bin/kafka-topics ...

  9. [bigdata] kafka基本命令 -- 迁移topic partition到指定的broker

    版本 0.9.2 创建topic bin/kafka-topics.sh --create --topic topic_name --partition 6 --replication-factor ...

随机推荐

  1. Helios Service Release 2安装SVN

    Eclipse Helios Service Release 2安装SVN地址:subclipse http://subclipse.tigris.org/update_1.6.x 1.使用方式:he ...

  2. iPhone各尺寸 app界面设计尺寸规范

    ip6: 375 * 667 pt @2x   ~ 750 x 1334 ip6+: 414 * 736 pt @3x ~ 1242 x 2208 ip5: 320 * 568 pt  @2x ~ 6 ...

  3. codeforces 402E - Strictly Positive Matrix【tarjan】

    首先认识一下01邻接矩阵k次幂的意义:经过k条边(x,y)之间的路径条数 所以可以把矩阵当成邻接矩阵,全是>0的话意味着两两之间都能相连,也就是整个都要在一个强连通分量里,所以直接tarjan染 ...

  4. pyinstaller遇到的坑

    最近接了一个python的活,具体的就不展开,大概就是需要搭建一个服务器,接收客户端上传文件,调用算法模型,然后返回相应的数据.算法模块用的是tensorflow模块,里面一大堆东西,网上看了很多,最 ...

  5. C# 调用非托管函数

    C#通过DllImport可以直接调用Windows中的一些功能.C++中已经编写好的一些方法: DllImport所在的名字空间:System.Runtime.InteropServices; Dl ...

  6. php angular/think angular/php模版引擎

    在thinphp5中发现一个好用的模版引擎—think-angular, 此模板引擎主要特点是 不需要额外的标签定义, 全部使用属性定义, 写好的模板文件在IDE格式化代码的时候很整洁, 因为套完的模 ...

  7. Android APK瘦身之webp图片

    webp格式是谷歌推出的一种有损压缩格式,这种图片格式相比png或者jpg格式的图片损失的质量几乎可以忽略不计,但是压缩后图片的体积却比png或者jpg要小很多.亲测一个100kb的png图片经过we ...

  8. The user specified as a definer ('root'@'%') does not exist 解决方法

    mysql> grant all privileges on *.* to root@"%" identified by "."; Query OK, r ...

  9. MFC_2.7 树控件的基本使用

    树控件的基本使用 1.添加控件设置变量绑定 2.添加数据 HTREEITEM RootNode1 = m_TreeCtrl.InsertItem(L"北京"); HTREEITEM ...

  10. 安卓app测试之Monkeyrunner

    一.MonkeyRunner简介 MonkeyRunner提供了系列的API ,MonkeyRunner可以完成模拟事件及截图操作 ,分为以下三类: MonkeyRunner:用来连接设备或模拟器的 ...