bjfu---fudq and IME Again

2024-01-21 10:48
文章标签 ime bjfu fudq

本文主要是介绍bjfu---fudq and IME Again,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

fudq and IME Again

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:6            测试通过:4

描述

fudq发现现代的人越来越离不开两样东西,一样是电脑,一样是手机,尤其是手机,很多人几乎都是机不离身。fudq发现用手机输单词也是件有趣的事情。手机键盘数字键和字母对应关系如下:
2 : a, b, c     3 : d, e, f    4 : g, h, i    5 : j, k, l    6 : m, n, o   
7 : p, q, r, s  8 : t, u, v    9 : w, x, y, z
当输入单词“fudq”的时候,我们依次按下数字键3,8,3,7,然后系统就会从自带的字典里筛选出可能的单词,如“dtfp”,"dues","evfr"等等。于是fudq产生了疑问,给出系统字典库,然后给出一串手机按键数字,fudq想知道有多少个符合条件的单词。

输入

输入第一行是一个正整数T(1<=T<=20),表示接下来有T组测试数据。
接下来有T组数据,每组数据首先包含两个正整数N和M。1<=N<=10000,1<=M<=10000.
接下来有N行,表示输入的N个手机数字串,每行代表一个,长度不超过6.
接下来有M行,表示字典库里的M个单词,每行一个单词,长度不超过6.
保证不会有重复的手机数字串,也不会有重复的单词。

输出

每组数据输出N个整数,每个数对应N个手机数字串,表示有多少个单词符合该手机数字串。

样例输入

1
3 6
49
3837
86
gy
to
fudq
dues
ga
acm

样例输出

1
2
1

 

//只能说不淡定了..字符串排序搞了N久.. 才发现之前是对的.. 想多了...

//n最大为10000,题目最后提示说数据加强了,最后进行了预处理+二分。  该数量级为 nlog(n)。  其他就是模拟了..

代码:

#include<stdio.h>
#include<string.h>
#include <math.h>
#include <algorithm>
#include <stdlib.h>
using namespace std;
#define N 10010
typedef struct{
char str[11];
int num;
}LNode;
LNode f[N],f1[N],f2[N];
char zhuan(char x){
if(x>='a' && x<='c') return '2';
if(x>='d' && x<='f') return '3';
if(x>='g' && x<='i') return '4';
if(x>='j' && x<='l') return '5';
if(x>='m' && x<='o') return '6';
if(x>='p' && x<='s') return '7';
if(x>='t' && x<='v') return '8';
if(x>='w' && x<='z') return '9';
}
int cmp(const void *a,const void *b){
return strcmp((*(LNode*)a).str,(*(LNode*)b).str);
}
int main()
{
int T,n,m,i,j,k,t;
scanf("%d",&T);
while(T--){
char a[11];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) scanf("%s",f1[i].str);
k=0;
for(i=0;i<m;i++){
scanf("%s",a);
int len=strlen(a);
for(j=0;j<len;j++)
a[j]=zhuan(a[j]);
strcpy(f2[k++].str,a);
}
int kk=120;
qsort(f2,m,sizeof(f2[0]),cmp);;//排序之后,进行整合预处理;
int num=1;j=0;
for(i=1;i<k;i++){
if(strcmp(f2[i].str,f2[i-1].str)==0) num++;
else{
strcpy(f[j].str,f2[i-1].str);
f[j++].num=num;
num=1;
}
}
if(strcmp(f2[i-1].str,f2[i-2].str)!=0){
strcpy(f[j].str,f2[i-1].str);
f[j++].num=num;
}//加上最后一位。 一共j种情况。
for(i=0;i<n;i++){
int start=0,last=j-1,mid;mid=(start+last)/2;
k=-1;int flag;
while(start<=last){
flag=strcmp(f[mid].str,f1[i].str);
if(flag==0){k=mid;break;}
else{
if(flag>0){last=mid-1;mid=(start+last)/2;}
else{start=mid+1;mid=(start+last)/2;}
}
}
if(k==-1) printf("0\n");
else{printf("%d\n",f[mid].num);}
}
}
//system("pause");
return 0;
}

 

这篇关于bjfu---fudq and IME Again的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629280

相关文章

Android输入法IME(三)

2.2. IME管理端(IMMS)初始化流程 IMMS运行在system server进程中,属于系统服务的一部分,用于控制输入法的显示/隐藏、切换、绑定等操作。 涉及代码文件路径: IMMS运行在system server进程中,属于系统服务的一部分,用于控制输入法的显示/隐藏、切换、绑定等操作。 涉及代码文件路径: frameworks/base/services/java/com/an

IME输入法编程: 第三章 ime文件中必须使用的结构

前二章我们讲述了ime和imm函数,二者之间是靠下列结构通讯的。 1、IMEINFOstruct tagIMEInfo { //输入法的接口信息 用于ImeInquire函数中DWORD dwPrivateDataSize;//用户设计的数据结构的字节数DWORD fdwProperty; //输入法对键盘事件的相应特性//其中其高字可为下列字节位的组合://=IME_PROP_A

IME输入法编程: 第二章 Windows9x系统提供的ime管理函数

IME输入法编程: 第二章 Windows9x系统提供的ime管理函数 上一章,我们介绍了ime文件中必须设计的函数,这些函数要靠我们自己来设计。要完成这些函数的设计, 需用到windows  系统提供的管理函数(Input Method Manager,简称IMM)。 IMM函数可以被IME函数使用,也可用于应用软件直接管理IME。 相关术语: (1)input

IME输入法编程:第一章 Windows9x系统下汉字输入法的基本原理

IME输入法编程 第一章 Windows9x系统下汉字输入法的基本原理 Windows系统下汉字输入法实际上是将输入的标准ascii字符串按照一定的编码规则转换为汉字或汉字串,进 入到目的地。   由于应用程序各不相同,用户不可能自己去设计转换程序,因此,汉字输入自然而然落到WINDOWS系统管理中。 一、输入法与系统的关系      键盘事件  应用程序

hdu 4287 Intelligent IME 字典树

// hdu 4287 Intelligent IME 字典树//// 题目大意://// 智能abc输入法,2,3,4,5,6,7,8,9分别对应不同的字母// 现在输入n串数字,m串字母串,问n与m对应的串有多少//// 解题报告://// 字典树,先将数字插入到字典树中,并赋予val值,最后// 将字母对应数字,因为字母对应唯一的数字,这样换成数字就// 可以进行查

bjfu---1196fudq and Digital

fudq and Digital 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:18            测试通过:2 描述 The other day, AC Goddness asked fudq for help as she was in trouble in a easy problem.The proble

Intelligent IME hdu 4287

字典树,练习模版。 #include<cstdio>#include<iostream>using namespace std;struct Trie{int sum;Trie *next[8];Trie(){int i;for(i=0;i<8;i++)next[i]=NULL;sum=0;}}*root=new Trie,*temp;void DealTrie(char dic

输入法编辑器(IME)程序设计(2)

2004年03月19日 15:54:00 有译的不妥的地方请大家指正,我随时更改:) IME Window Class The "IME" window class is a predefined system global class that defines the appearance and behavior of the standard IME windows. The c

输入法编辑器(IME)程序设计(1)

2004年03月20日 14:32:00 头一次发译的东西,肯定会有不少错误,请大家多多斧正。 本人志在编写中国最出色的输入法,解放中国人的双手。 今从零起步,朝成夕可死也。 Input Method Editor An input method editor (IME) is a program that allows computer users to enter comple

输入法编辑器(IME)程序设计(3)

2004年03月20日 14:37:00 Composition String The composition string is the current text in the composition window. This is the text that the IME converts to final characters. Each composition string