#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+2e4+11;
const int dep = 666;
const int len = 30;
struct AAA{
string str;
int cnt;
}a[maxn];
bool cmp(AAA a,AAA b){
if(a.cnt!=b.cnt) return a.cnt>b.cnt;
// return a.str<b.str;
return lexicographical_compare(a.str.begin(),a.str.end(),b.str.begin(),b.str.end());
}
struct TRIE{
int son[dep][len];
bool edp[maxn];//is endPoint?
vector<int> vec[maxn];//idx of str
int tot,root;
int node(){
for(int i = 0; i < len; i++) son[tot][i]=-1;
edp[tot]=0;
return tot++;
}
void init(){
memset(son,-1,sizeof son);
memset(vec,0,sizeof vec);
tot=0;
root=node();
}
void insert(char str[]){
int now=root;
int llen = strlen(str);
for(int i = 0; i < llen; i++){
int idx=str[i]-'a';
if(son[now][idx]==-1) son[now][idx]=node();
now=son[now][idx];
}
edp[now]=1;
}
// bool asprefix(char str[]){
// int llen=strlen(str);
// int now=root;
// bool reach=0;
// for(int i = 0; i < llen; i++){
// int idx=str[i]-'a';
// if(son[now][idx]==-1&&reach) return 1;
// if(son[now][idx]==-1&&!reach) return 0;
// now=son[now][idx];
// if(edp[now]) reach=1;
// }
// return reach;
// }
void insert(string str,int k){
int now=root;
int llen=str.length();
for(int i = 0; i < llen; i++){
int idx = str[i]-'a';
if(son[now][idx]==-1) break;
now=son[now][idx];
if(edp[now]&&vec[now].size()<10) vec[now].push_back(k);
}
}
int getid(char str[]){
int now=root;
int llen=strlen(str);
for(int i = 0; i < llen; i++){
int idx=str[i]-'a';
now=son[now][idx];
}
return now;
}
}trie;
char s[maxn][30];
int main(){
ios::sync_with_stdio(false);
int n,m;
while(cin>>n){
for(int i = 1; i <= n; i++){cin>>a[i].str>>a[i].cnt;}
cin>>m;
trie.init();
for(int i = 1; i <= m; i++){
cin>>s[i];
trie.insert(s[i]);
}
sort(a+1,a+n,cmp);
for(int i = 1; i <= n; i++){
trie.insert(a[i].str,i);
}
for(int i = 1; i <= m; i++){
int id=trie.getid(s[i]);
if(i>1) cout<<endl;
for(int j = 0; j < trie.vec[id].size(); j++){
cout<<a[trie.vec[id][j]].str<<endl;
}
}
}
return 0;
}

待修改 URAL 1542的更多相关文章

  1. URAL 1542. Autocompletion 字典树

    给你最多10w个单词和相应的频率 接下来最多1w5千次询问 每次输入一个字符串让你从前面的单词中依照频率从大到小输出最多10个以该字符串为前缀的单词 開始把单词建成了字典树 然后每次询问找到全部满足条 ...

  2. URAL 1934 Black Spot --- 最短的简单修改

    右侧是1.维护的同时保持最短路p值至少,我有直接存款(1-p).该概率不满足,为了使这个值极大. #include <iostream> #include <cstdlib> ...

  3. ural 2062 Ambitious Experiment

    2062. Ambitious Experiment Time limit: 3.0 secondMemory limit: 128 MB During several decades, scient ...

  4. ural 1251. Cemetery Manager

    1251. Cemetery Manager Time limit: 1.0 secondMemory limit: 64 MB There is a tradition at the USU cha ...

  5. HDU 1542 Atlantis(线段树扫描线+离散化求面积的并)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  6. ●线段树的三个题(poj 3225,hdu 1542,hdu 1828)

    ●poj 3225 Help with Intervals(线段树区间问题) ○赘述题目 给出以下集合操作: 然后有初始的一个空集S,和以下题目给出的操作指令,并输入指令: 要求进行指令操作后,按格式 ...

  7. 【BZOJ1814】Ural 1519 Formula 1 (插头dp)

    [BZOJ1814]Ural 1519 Formula 1 (插头dp) 题面 BZOJ Vjudge 题解 戳这里 上面那个链接里面写的非常好啦. 然后说几个点吧. 首先是关于为什么只需要考虑三进制 ...

  8. HDU 1542 - Atlantis - [线段树+扫描线]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  9. HDU 1754 I Hate It<区间最值 单点修改>

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. C++知识点总结(四)——面向对象的编程细节总结

    1.空类的默认函数 一般情况下,对于任意一个类A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline(公有.内联)的默认函数,这4个函数最常见的形式为: ...

  2. ngx-bootstrap使用04 carousel组件

    1 carousel 是一个通过循环播放图片.文本的幻灯片:就像一个旋转旋转木马一样,但是不支持嵌套使用 2 如何使用 2.1 搭建ngx-bootstrap使用环境 参见博文:点击前往 2.2 在模 ...

  3. 前端学习笔记2017.6.12 DIV布局网页

    DIV的功能就是把网页划分成逻辑块的. 看下豆瓣东西页面的布局,我们来分析下. 按照先从上到下的原则,把这个页面分成几个块: 首先是最顶端的这个条,这是一个DIV,我们给它起个名字,叫banner 然 ...

  4. 4.传统的MVC

    通过document view设计,我们把应用程序的状态(clicktimes)从一个简单的类设计中抽取出来.下一个目标是抽取转化主要的事件(这个例子里面是鼠标点击之后释放)为应用程序逻辑从而改变应用 ...

  5. JAVA and JAVA WEB with TOMCAT and ECLIPSE 学习过程中遇到的字符乱码问题及解决方法汇总(随时补充)

    JAVA语言具有跨平台,unicode字符集编码的特点. 但是在开发过程中处理数据时涉及到的字符编码问题零零散散,尤其是处理中文字符时一不留神就可能出现一堆奇奇怪怪的符号,俗称乱码. 对于乱码,究其原 ...

  6. 缓存淘汰算法之LRU

    1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”. ...

  7. enumerate()函数

    for index,value in enumerate(list):       print index,value 等于for i in range(0,len(list)): print i,l ...

  8. ISE 14.7 XST.exe stop working

    http://www.xilinx.com/support/answers/59851.html Description XST completes but then instead of retur ...

  9. Python入门:模拟登录(二)或注册之requests处理带token请求

    转自http://blog.csdn.net/foryouslgme/article/details/51822209 首先说一下使用Python模拟登录或注册时,对于带token的页面怎么登录注册模 ...

  10. Ajax上传文件注意事项

    如图: 因为传进来的参数被预先处理了,所以才出现了illegal invocation报错,只要将processData的值改为false就能解决这个小问题: 因为JQ自动的帮我们设置了请求头,但是a ...