HDU 4287 <map>的使用

对于这道题我主要要讲得是STL中map的简单使用。

先说说map的用处。

map就是从键(key)到值(value)的映射。因为重载了[]运算符,map像数组的“高级版”,例如可以用一个map<string,int>month_name来表示“月份名字到月份编号”的映射,然后用month_name["July"] = 7这样的方式来赋值。

它的意思就是map<string,int>month_name表示[ ] 里面代表的是string 而 map[] = __后面部分的值是int型。

说完map的简单用法,我们来说说题目。

题意:

输入n,m.然后输入n的数字,再输入m的字母。计算通过手机的键盘按这些数字能否得到相应的字母,求满足该数字额字母有多少个

做法:

利用map对数字进行标记,然后通过把字母转换成相应的数字,放到对应的map里面看能不能找到标记的,如果标记就加一。

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std;
int ss[500];
string a[5005];
map<string, int>vm;
void Clear() {
    ///字母-'a'对应的数字
    memset(ss, 0, sizeof(ss));
    ss[0] = ss[1] = ss[2] = '2';
    ss[3] = ss[4] = ss[5] = '3';
    ss[6] = ss[7] = ss[8] = '4';
    ss[9] = ss[10] = ss[11] = '5';
    ss[12] = ss[13] = ss[14] = '6';
    ss[15] = ss[16] = ss[17] = ss[18] = '7';
    ss[19] = ss[20] = ss[21] = '8';
    ss[22] = ss[23] = ss[24] = ss[25] = '9';
}
int main() {
    Clear();
    int n, m, tc;
    scanf("%d", &tc);
    while(tc--) {
        ///vm的清空
        vm.clear();
        scanf("%d%d", &n, &m);
        for(int i = 0; i < n; i++) {
            string s;
            cin >> s;
            a[i] = s;
            vm[s] = 0;
        }
        for(int i = 0 ; i < m; i++) {
            string s1, s2;
            s1 = "";
            cin >> s2;
            for(int j = 0 ; j < s2.size(); ++j)
            {
                s1 += ss[s2[j]-'a'];
            }
            vm[s1] ++;
        }
        for(int i = 0;i < n;++i) cout  << vm[a[i]] << endl;
    }
    return 0;
}

HDU 4287 <map>的使用

时间: 2024-08-07 05:16:54

HDU 4287 <map>的使用的相关文章

HDU 4287 Intelligent IME(字典树数组版)

Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4776    Accepted Submission(s): 2227 Problem Description We all use cell phone today. And we must be familiar with the intelligen

hdu 1247 map的使用

http://acm.hdu.edu.cn/showproblem.php?pid=1247 Hat’s Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7760    Accepted Submission(s): 2814 Problem Description A hat’s word is a word in the

hdu 4941 map的应用+离散

1 #include<iostream> 2 #include<cstdio> 3 #include<map> 4 #include<algorithm> 5 using namespace std; 6 7 int main() 8 { 9 int T,n,m,k,a,b,c,q,cas=1; 10 scanf("%d",&T); 11 while(T--) 12 { 13 map<int,map<int,int&g

HDU 4921 Map DFS+状态压缩+乘法计数

算最多十条链,能截取某前缀段,每种方案都可以算出一个权值,每种方案的概率都是总数分之一,问最后能构成的所有可能方案数. 对计数原理不太敏感,知道是DFS先把链求出来,但是想怎么统计方案的时候想了好久,其实因为只能取某个链的前缀,所以直接取链长加+1 然后相乘即可,当然因为会出现都是空的那种情况,要去掉,全部乘完之后,要-1 然后就是算权值了,权值等于当前加进来的点的总和 以及 等级相同的点的加成,并不是特别好算,这时候考虑每个状态下的点对全局的贡献,对,就是这个思想,用状态压缩来表示状态,然后这

HDU 1075 map or 字典树

What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K (Java/Others)Total Submission(s): 12773    Accepted Submission(s): 4069 Problem Description Ignatius is so lucky that he met a Martian yesterday. But

HDU 4921 Map

题意: 给n个节点  他们形成了最多10条链  每条最多1000的长度  每个节点有个val  你可以选择任意位置截断链  断点前的所有节点被你获得  通过题中计算公式得出你的val  问  通过随机截断  获得val的期望是多少 思路: 期望=所有方案val的和/方案数 这里明显有分层的现象  而且每层最多10个元素  因此想到状压  那么我们只要逐层统计  每层计算一下能对"所有方案val的和"产生多少贡献即可  方案数可以直接算出来  计算方法如下 对于方案数  它就等于 (am

HDU 4287 Intelligent IME(map运用)

转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4287 Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2091    Accepted Submission(s): 1031

ACM学习历程—HDU 4287 Intelligent IME(字典树 || map)

Description We all use cell phone today. And we must be familiar with the intelligent English input method on the cell phone. To be specific, the number buttons may correspond to some English letters respectively, as shown below: 2 : a, b, c    3 : d

HDU 4287 Intelligent IME (字典树 &amp;&amp; map)

分析:此题题意很简单,我就不说了,第一想到的就是用字典树做,首先你得考虑用哪个作为字典树,显然,这里用后面的字符串作为树更好. 接着就是套模板了.此题WA了无数次,找bug找了一天,也没找到头绪,后来看别人的结题报告,才明白,原来坑爹的把memset(mark)放在了循环外面,一直以为只循环一次就够了,,真是坑爹啊,,, 做到现在了,感觉字典树的问题基本上都能用map来解决. 代码一:字典树 学会了用内联,确实会快一些 #include <iostream> #include <cstr