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搜索算法, 那更好啊,大家一起研究研究,谢谢. 第一部分是比較简单的获取手机联系人. 获取 ...
随机推荐
- Spring Boot 系列 @ControllerAdvice 拦截异常并统一处理
ControllerAdvice用法解析 简介 通过@ControllerAdvice注解可以将对于控制器的全局配置放在同一个位置. 注解了@Controller的类的方法可以使用@Exception ...
- Javaweb学习笔记——(八)——————常见系统体系结构,Tomcat,以及web的内部外部应用,http协议概述
·软件系统体系结构: 1.常见软件系统体系结构B/S.C/S C/S 1.C/S结构即客户端/服务器(Client/Server),列如QQ: 2.需要编写服务器端程序,以及客户端程序,列如我们安装的 ...
- mysql 8.0 ~ 安装
1 环境配置 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar. ...
- js常用的工具函数
JS选取DOM元素的方法注意:原生JS选取DOM元素比使用jQuery类库选取要快很多1.通过ID选取元素document.getElementById('myid');2.通过CLASS选取元素do ...
- 转载CSDN博客步骤
在参考“如何快速转载CSDN中的博客”后,由于自己不懂html以及markdown相关知识,所以花了一些时间来弄明白怎么转载博客,以下为转载CSDN博客步骤和一些知识小笔记. 参考博客原址:http: ...
- Faster rcnn代码理解(3)
紧接着之前的博客,我们继续来看faster rcnn中的AnchorTargetLayer层: 该层定义在lib>rpn>中,见该层定义: 首先说一下这一层的目的是输出在特征图上所有点的a ...
- lxde 的安装和卸载以及注意事项,lubuntu
安装: $ sudo apt install lxde $ sudo apt install lxde-common 安装完毕后,可能没法关机及logout,可以使用如下安装: $ sudo apt ...
- phantomjs 中如何使用xpath
function getNodeInfo(inputcsvPath) { var htmlnodeInfo = page.evaluate(function () { //_Ltg var XPATH ...
- 阿里云配置ssl证书服务遇到的几个问题和解决方法
系统环境: 系统:阿里云ECS CentOS6.5+Apache2.4.10 前提:公司需要将站点升级到使用SSL证书服务(https) 实践执行:在阿里云的证书服务--选择了一个免费的证书服务,毕竟 ...
- WebRTC服务器——Licode 环境搭建
WebRTC服务器--Licode 环境搭建 系统配置 阿里云服务器 Ubuntu 14.04.5 LTS Docker 环境搭建 在一台空的机器上搭建docker环境,先要安装docker,执行下面 ...