T9 HDU1298
就是字典树加dfs
把所有操作封在结构体里面
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream> using namespace std; const int maxn = 1e5 + ; char dic[][] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
int n, w, p, m, P;
char s[], num[], Find[], ans[]; struct Trie
{
int pos;
int tree[maxn][];
int val[maxn]; void clear()
{
pos = ;
memset(tree[], , sizeof(tree[]));
memset(val, , sizeof(val));
} int idx(char c)
{
return c - 'a';
} void insert(char *s, int v)
{
int root = , n = strlen(s);
for(int i = ; i < n; i++)
{
int ch = idx(s[i]);
if(!tree[root][ch])
{
memset(tree[pos], , sizeof(tree[pos]));
tree[root][ch] = pos++;
} root = tree[root][ch];
val[root]+=v;
}
} void query(int cur, int len, int u)
{
if(cur == len && val[u] > P)
{
P = val[u];
for(int i = ; i < len; i++)
{
Find[i] = ans[i];
Find[len] = '\0';
}
return ;
}
int id = num[cur] - '';
for(int i = ; dic[id][i]; i++)
{
int c = idx(dic[id][i]);
if(!tree[u][c])
continue;
ans[cur] = dic[id][i];
query(cur+, len, tree[u][c]);
}
return ;
}
}trie; int main()
{
int flag = ;
int T;
scanf("%d", &T);
while(T--)
{
trie.clear();
printf("Scenario #%d:\n", flag++);
scanf("%d", &w);
for(int i = ; i < w; i++)
{
scanf("%s%d", s, &p);
trie.insert(s, p);
}
scanf("%d", &m);
for(int i = ; i < m; i++)
{
scanf("%s", num);
int len = strlen(num);
for(int j = ; j < len; j++)
{
P = ;
trie.query(, j, );
if(P>)
puts(Find);
else
puts("MANUALLY");
}
puts("");
}
puts("");
}
}
T9 HDU1298的更多相关文章
- hdu1298 T9(手机输入法,每按一个数字,找出出现频率最高的字串,字典树+DFS)
Problem Description A while ago it was quite cumbersome to create a message for the Short Message Se ...
- POJ 1451 T9
T9 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3083 Accepted: 1101 Description Ba ...
- http://blog.csdn.net/bluejoe2000/article/details/39521405#t9
http://blog.csdn.net/bluejoe2000/article/details/39521405#t9
- hdu 1298 T9(特里+DFS)
pid=1298" target="_blank" style="">题目连接:hdu 1298 T9 题目大意:模拟手机打字的猜想功能.依据概 ...
- T9
T9 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission ...
- POJ 1451 - T9 - [字典树]
题目链接:http://bailian.openjudge.cn/practice/1451/ 总时间限制: 1000ms 内存限制: 65536kB 描述 Background A while ag ...
- HDU1298 字典树+dfs
T9 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- HDU 1298 T9【字典树增加||查询】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1298 T9 Time Limit: 2000/1000 MS (Java/Others) Memo ...
- 玩爆你的手机联系人--T9搜索(一)
自己研究了好几天联系人的T9搜索算法, 先分享出来给大家看看. 欢迎不吝赐教.假设有大神有更好的T9搜索算法, 那更好啊,大家一起研究研究,谢谢. 第一部分是比較简单的获取手机联系人. 获取 ...
随机推荐
- SSM-1第一章 认识SSM框架和Redis
第一章 认识SSM框架和Redis 1.1 Spring框架 Sring理念 Ioc 控制反转 IOC是一个容器,在Spring中,它会认为一切Java资源都是JavaBean,容器的目标是 ...
- SQL语句——重复记录
1.查找重复记录: (按id查找) select * from user_info where id in ( select id from user_info group by id ) 即:sel ...
- elasticsearch 基本配置
基本配置elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml .logging.yml.jvm.options 第一个是es的基本配置文件,第二个是日志 ...
- 未能加载文件或程序集System.Web.Http.WebHost
解决方案:只需要在项目的bin文件夹下放入下面三个dll. 将:C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies中的 ...
- Android中实现延时执行操作的几种方法
1.使用线程的休眠实现延时操作 new Thread() { @Override public void run() { super.run(); Thread.sleep(3000);//休眠3秒 ...
- 使用layer 弹出对话框 子父页面相互参数传递 父页面获取子页面参数实例
一.先看效果: 1.点击三个点的图标弹出了子页面: 2.子页面调用父页面方法,图一调用父页面方法,图二得到父页面var变量. 3.选择之后,关闭弹框,父页面得到子页面单选框选择的v ...
- 【ARTS】01_10_左耳听风-20190114~20190120
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- Statistics in Python
Statistics in Python Materials for the “Statistics in Python” euroscipy 2015 tutorial. Requirements ...
- 用python查看windows事件日志的方法(待后续研究)
#coding=utf8 import copy import ctypes from ctypes import byref, POINTER, cast, c_uint64, c_ulong, c ...
- python脚本发送邮件
#!/usr/bin/python #_*_ coding:utf-8 _*_ from email.MIMEText import MIMEText from email.MIMEMultipart ...