就是字典树加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的更多相关文章

  1. hdu1298 T9(手机输入法,每按一个数字,找出出现频率最高的字串,字典树+DFS)

    Problem Description A while ago it was quite cumbersome to create a message for the Short Message Se ...

  2. POJ 1451 T9

    T9 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3083   Accepted: 1101 Description Ba ...

  3. http://blog.csdn.net/bluejoe2000/article/details/39521405#t9

    http://blog.csdn.net/bluejoe2000/article/details/39521405#t9

  4. hdu 1298 T9(特里+DFS)

    pid=1298" target="_blank" style="">题目连接:hdu 1298 T9 题目大意:模拟手机打字的猜想功能.依据概 ...

  5. T9

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

  6. POJ 1451 - T9 - [字典树]

    题目链接:http://bailian.openjudge.cn/practice/1451/ 总时间限制: 1000ms 内存限制: 65536kB 描述 Background A while ag ...

  7. HDU1298 字典树+dfs

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

  8. HDU 1298 T9【字典树增加||查询】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1298 T9 Time Limit: 2000/1000 MS (Java/Others)    Memo ...

  9. 玩爆你的手机联系人--T9搜索(一)

         自己研究了好几天联系人的T9搜索算法, 先分享出来给大家看看. 欢迎不吝赐教.假设有大神有更好的T9搜索算法, 那更好啊,大家一起研究研究,谢谢. 第一部分是比較简单的获取手机联系人. 获取 ...

随机推荐

  1. Dojo框架:误解与现实[转载]

    随着Ajax技术的流行,越来越多的Web应用使用Ajax技术来提高用户体验.使用Ajax技术的一个重要优势是不需要额外的浏览器插件支持,只需要使用浏览器原生的API,并利用JavaScript来操作即 ...

  2. HTML —— 小记

    标签语义化 所谓标签语义化是要使HTML标签具备很好的可读性,可以清晰传达每个标签所要表达的意义,以方便其被友好的处理和解析(主要针对网络爬虫) 好处: 1.对搜索引擎友好,增加排名权重 2.对用户友 ...

  3. c#中富文本编辑器Simditor带图片上传的全部过程(项目不是mvc架构)

    描述:最近c#项目中使用富文本编辑器Simditor,记录一下以便以后查看. 注:此项目不是MVC架构的. 1.引用文件 项目中引用相应的css和js文件,注意顺序不能打乱,否则富文本编辑器不会正常显 ...

  4. Django 2.0 学习(12):Django 模板语法

    Django 模板语法 一.模板 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法 模板语法变量:{{ }} 在Django模板中遍历复杂数据结构的关键是句点字 ...

  5. quartz开源插件(定时心跳后台执行)

    定时心跳,一般应用场景都是服务或者exe控制台程序来搜集数据推送等,供其他页面来调用或者向服务推送等,但又不限于此. 1.先来介绍下quartz吧. 2.quartz用法: 3.我写个小例子来巩固下q ...

  6. delphi-TTcpServer与TTcpClient

    最简单的TTcpServer与TTcpClient通信实例-Delphi_海盗船长_新浪博客http://blog.sina.com.cn/s/blog_5383794d0100nt9u.html d ...

  7. JNI打通java和c

    1.JNI简介 The Java Native Interface (JNI) is a programming framework that enables Java code running in ...

  8. ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Memory Type and Attributes

    1.前言 2. Memory类型和属性 memory分为normal memory和device memory,两种类型的Memory有各自的属性,除了下面介绍的几种属性外,还有其他一些杂项属性 2. ...

  9. 最大流算法-最高标号预流推进(HLPP)

    昨天我们学习了ISAP算法,它属于增广路算法的大类.今天学习的算法是预流推进算法中很高效的一类--最高标号预流推进(HLPP). 预流推进 预流推进是一种很直观的网络流算法.如果给到一个网络流让你手算 ...

  10. nginx1.8.1反向代理、负载均衡功能的实现

    nginx1.8.1 proxy 服务器192.168.8.40 web1 centos6.5 httpd2.2.15 web2 centos7.2 httpd2.4.6 1.代理功能的简单实现 ng ...