待修改 URAL 1542
#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的更多相关文章
- URAL 1542. Autocompletion 字典树
给你最多10w个单词和相应的频率 接下来最多1w5千次询问 每次输入一个字符串让你从前面的单词中依照频率从大到小输出最多10个以该字符串为前缀的单词 開始把单词建成了字典树 然后每次询问找到全部满足条 ...
- URAL 1934 Black Spot --- 最短的简单修改
右侧是1.维护的同时保持最短路p值至少,我有直接存款(1-p).该概率不满足,为了使这个值极大. #include <iostream> #include <cstdlib> ...
- ural 2062 Ambitious Experiment
2062. Ambitious Experiment Time limit: 3.0 secondMemory limit: 128 MB During several decades, scient ...
- ural 1251. Cemetery Manager
1251. Cemetery Manager Time limit: 1.0 secondMemory limit: 64 MB There is a tradition at the USU cha ...
- HDU 1542 Atlantis(线段树扫描线+离散化求面积的并)
Atlantis Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- ●线段树的三个题(poj 3225,hdu 1542,hdu 1828)
●poj 3225 Help with Intervals(线段树区间问题) ○赘述题目 给出以下集合操作: 然后有初始的一个空集S,和以下题目给出的操作指令,并输入指令: 要求进行指令操作后,按格式 ...
- 【BZOJ1814】Ural 1519 Formula 1 (插头dp)
[BZOJ1814]Ural 1519 Formula 1 (插头dp) 题面 BZOJ Vjudge 题解 戳这里 上面那个链接里面写的非常好啦. 然后说几个点吧. 首先是关于为什么只需要考虑三进制 ...
- HDU 1542 - Atlantis - [线段树+扫描线]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- HDU 1754 I Hate It<区间最值 单点修改>
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
随机推荐
- js闭包(二)
一.何谓“闭包”? 所谓“闭包(Closure)”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 描述的如此学术的官方解释,相信很少人能够 ...
- ListView里面adapter的不同分类的item
public class PlayAdapter extends BaseAdapter { /** * 标题的item */ public static final int ITEM_TITLE = ...
- strcmp()比较函数和strcasecmp()和strnatcmp()
strcmp()的函数原型如下() int strcmp(string str1,string str2) 该函数需要两个进行比较的参数字符串,如果这两个字符串相等,该函数就返回0,如果按字典顺序st ...
- Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)
目录 1 什么是spring框架 2 spring框架的特点 3 spring容器 3.1 什么是spring容器 3.2 spring容器创建对象的编程步骤 3.4 spring容器创建对象的方式 ...
- nexus admin 从文件角度进行密码重置
\sonatype-work\nexus\conf\security.xml 文件中保存账号密码信息. 打开 vi nexus-2.10.0-02-bundle\sonatype-work\nexus ...
- essential C++中关于面向过程和面向对象的说明
昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其 ...
- 除了ROS ,机器人自主定位导航还能怎么做?
博客转载自:https://www.leiphone.com/news/201609/10QD7yp7JFV9H9Ni.html 雷锋网(公众号:雷锋网)按:本文作者科技剪刀手,思岚科技技术顾问. 随 ...
- R: 自定义函数
################################################### 问题:自定义函数 18.4.29 自定义函数,其返回值是个问题,还有怎么让过程变量成为全局变 ...
- 使用Eclipse创建Maven javaweb项目
其实是我自己不会创建Maven JavaWeb项目,就自己瞎蒙了一下,竟然成功了. 这里有个条件就是你的Maven已经在电脑上配好了. 第一步就是File->New->Maven Proj ...
- 巧用 git rebase 将某一部分 commit 复制到另一个分支
一.为什么需要将一个 commit 复制到其他分支上去呢? 在我们的实际开发的过程中,我们的项目中会存在多个分支. 在某些情况下,可能需要将某一个分支上的 commit 复制到另一个分支上去. 二 ...