ural1542 Autocompletion
Autocompletion
Memory limit: 64 MB
Input
Output
Sample
| input | output |
|---|---|
5 |
kanojo |
分析:若对每个询问走一遍字典树是超时的;
对于询问建立字典树,然后将排好序的单词依次插入就得到了答案;
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define vi vector<int>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
#define pii pair<int,int>
#define Lson L, mid, rt<<1
#define Rson mid+1, R, rt<<1|1
const int maxn=1e6+;
using namespace std;
ll gcd(ll p,ll q){return q==?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=;while(q){if(q&)f=f*p;p=p*p;q>>=;}return f;}
int n,m,k,t,q[maxn],to[maxn],id;
bool flag;
char ans[][][];
struct node
{
char b[];
int num;
bool operator<(const node&p)const
{
if(num==p.num)return strcmp(b,p.b)<;
else return num>p.num;
}
}a[maxn];
struct node1
{
int nxt[],num;
}b[maxn];
char c[];
void add(char*c,int tot)
{
int now=;
for(int i=;c[i];i++)
{
int x=c[i]-'a';
if(!b[now].nxt[x])b[now].nxt[x]=++id;
now=b[now].nxt[x];
}
if(!b[now].num)b[now].num=tot,to[tot]=tot;
else to[tot]=b[now].num;
}
void gao(char*c)
{
int now=;
for(int i=;c[i];i++)
{
int x=c[i]-'a';
if(b[now].nxt[x])
{
int y=b[now].nxt[x];
if(b[y].num&&q[b[y].num]<=)
{
strcpy(ans[b[y].num][q[b[y].num]++],c);
}
now=b[now].nxt[x];
}
else break;
}
}
int main()
{
int i,j;
scanf("%d",&n);
rep(i,,n)scanf("%s %d",a[i].b,&a[i].num);
sort(a+,a+n+);
scanf("%d",&m);
rep(i,,m)scanf("%s",c),add(c,i);
rep(i,,n)gao(a[i].b);
rep(i,,m)
{
if(flag)printf("\n");else flag=true;
rep(j,,q[to[i]]-)printf("%s\n",ans[to[i]][j]);
}
//system("Pause");
return ;
}
ural1542 Autocompletion的更多相关文章
- 拷贝内容到eclipse中导致JSP的auto-completion不工作
刚才在编辑JSP文件,有一些东西我懒得敲了,就把一些代码里面拷贝到eclipse的editor中,结果你猜怎么,拷贝进去以后,jsp的auto-completion居然不工作了!(即<%%> ...
- 关于Jupyter Notebook无法自动补全(Autocompletion),报错TypeError: __init__() got an unexpected keyword argument 'column' 的解决方案
关于Jupyter Notebook无法自动补全(Autocompletion),报错TypeError: __init__() got an unexpected keyword argument ...
- Eclipse中Editor开启Auto-completion
Java Editor .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ Java Script Editor 现在Eclipse限制使用最多 ...
- eclipse配置代码自动补全auto-completion
你如果使用的是JAVA EE的模式,就这样配置: 1. Window>Preferences>Java>Editor>Content Assist>Auto Activa ...
- URAL 1542. Autocompletion 字典树
给你最多10w个单词和相应的频率 接下来最多1w5千次询问 每次输入一个字符串让你从前面的单词中依照频率从大到小输出最多10个以该字符串为前缀的单词 開始把单词建成了字典树 然后每次询问找到全部满足条 ...
- Android学习路线
第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正则表达式. 3.面向对象的抽象,封装,继承,多态,类与对象,对象初始化 ...
- wxPython 自动提示文本框
1.原版和例子都在这里 在浏览器的地址栏,或者在百度.google 输入文字的时候,输入框的下面会把有关的项目都提示出来. wxPython 没有提供类似的控件,google 了一下,发现了一个,很好 ...
- 十个免费的web应用安全检测工具
Websites are getting more and more complex everyday and there are almost no static websites being bu ...
- 我的emacs配置
我的emacs配置文件 ;; .emacs ;; ============================== Basic Configure START ====================== ...
随机推荐
- HDU 5765 Bonds
比赛时候想了好久,不会.看了官方题解才会...... Bond是极小割边集合,去掉一个Bond之后,只会将原图分成两个连通块. 假设某些点构成的集合为 s(点集中的点进行状压后得到的一个十进制数),那 ...
- android:layout_weight属性的使用方法总结
原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6282826.html android:layout_weight属性可以和其他属性配合使用,产生多 ...
- MFC中将编辑框文本转换成整数,从而实现两个整数相加。
在头文件中,定义三个控件变量,如m_data1,m_data2,m_sum; void Cuse_demo_dllDlg::OnBnClickedButton1(){ CString data1; C ...
- log4j.xml(信息打印)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SY ...
- ASP.NET MVC Controller向View传值的几种方式
上几篇博文提到MVC和WebForm的区别,主要是MVC的Controller和View将传统的WebForm的窗体和后台代码做了解耦,这篇博文简单介绍一下在MVC中Controller向View是如 ...
- linuxmint计算器
命令行输入bc进入计算器, 可以计算 + 加法 - 减法* 乘法 / 除法^ 指数 % 余数 quit 关闭计算器
- http get with body data
http://stackoverflow.com/questions/978061/http-get-with-request-body Yes, you can send a request bod ...
- include和 merge
include和merge标记的作用主要是为了解决layout的重用问题. 比如我们有三四个Activity但是他们都要用到同一个样式的标题栏,虽然我们把一样的代码copy个三四遍也没关系,但实在是太 ...
- Java学习笔记之I/O流(读取压缩文件以及压缩文件)
1.读取压缩文件:ZipInputStream 借助ZipFile类的getInputStream方法得到压缩文件的指定项的内容,然后传递给InputStreamReader类的构造方法,返回给Buf ...
- JS-日期框、下拉框、全选复选框
<!-- 下拉框 --><link rel="stylesheet" href="static/ace/css/chosen.css" /&g ...