题目:有非常多工人。相应一个能力描写叙述表,每种能力有一个权值,求每一个工人的能力值。

分析:字符串。hash表,字典树。利用散列表或者字典树存储相应的单词和权值。查询就可以。

说明:注意初始化,计算完将数据清除。

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio> using namespace std; //hash_define
typedef struct hnode
{
char words[20];
int value;
hnode* next;
}hash;
hash hash_node[2001];
hash* hash_table[2005];
int hash_size; int hash_initial()
{
hash_size = 0;
memset(hash_table, 0, sizeof(hash_table));
memset(hash_node, 0, sizeof(hash_node));
} int hash_value(char *str)
{
int value = 0;
for (int i = 0 ; str[i] ; ++ i) {
value = value*26%1000;
value += str[i];
}
return value;
} int hash_insert(char *str, int val)
{
int value = hash_value(str);
hash_node[hash_size].value = val;
strcpy(hash_node[hash_size].words, str);
hash_node[hash_size].next = hash_table[value];
hash_table[value] = &hash_node[hash_size ++];
} int hash_find(char *str)
{
int value = hash_value(str);
for (hash* p = hash_table[value] ; p ; p = p->next)
if (!strcmp(p->words, str))
return p->value;
return 0;
}
//hash_end int main()
{
int m,n,v;
char buf[2001];
while (~scanf("%d%d",&m,&n)) {
hash_initial();
for (int i = 0 ; i < m ; ++ i) {
scanf("%s%d",buf,&v);
hash_insert(buf, v);
} for (int i = 0 ; i < n ; ++ i) {
int sum = 0;
while (~scanf("%s",buf)) {
if (!strcmp(buf, "."))
break;
sum += hash_find(buf);
}
printf("%d\n",sum);
}
}
return 0;
}

UVa 10295 - Hay Points的更多相关文章

  1. Hay Points

    Hay Points TimeLimit: 1 Second   MemoryLimit: 32 Megabyte Totalsubmit: 1022   Accepted: 602 Descript ...

  2. POJ 2403 Hay Points

    Hay Points Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5735   Accepted: 3695 Descri ...

  3. UVA 10869 - Brownie Points II(树阵)

    UVA 10869 - Brownie Points II 题目链接 题意:平面上n个点,两个人,第一个人先选一条经过点的垂直x轴的线.然后还有一个人在这条线上穿过的点选一点作垂直该直线的线,然后划分 ...

  4. UVA 11355 Cool Points(几何)

    Cool Points We have a circle of radius R and several line segments situated within the circumference ...

  5. Problem 1008 Hay Points

    Problem Description Each employee of a bureaucracy has a job description - a few paragraphs that des ...

  6. UVA 11355 Cool Points( 极角计算 )

    We have a circle of radius R and several line segments situated within the circumference of this cir ...

  7. Poj 2403 Hay Points(Map)

    一.题目大意 实现一个工资计算系统.工资的计算规则是:首先,给定一些关键字和对应的价值,这个相对于字典.然后给出的是求职者的描述,如果这个描述中包含关键字则加上对应的价值,总得价值就是这个求职者的工资 ...

  8. UVa 12714 Two Points Revisited (水题,计算几何)

    题意:给定一条线段,让你求一条线段与已知线段垂直,并且所有线段的坐标的点的坐标都不大于给定的坐标的最大值且不能为负数. 析:没啥好说的,随便找一条就好. 代码如下: #pragma comment(l ...

  9. ACM学习

    转:ACM大量习题题库   ACM大量习题题库 现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库.   US ...

随机推荐

  1. 在已编译安装nginx上动态添加模块

    一.添加nginx模块 找到安装nginx的源码根目录,如果没有的话下载新的源码 wget http://nginx.org/download/nginx-1.8.1.tar.gz 查看ngixn版本 ...

  2. MySQL学习点滴

    MySQL学习点滴 --分区表 概述: 分区功能并不是在存储引擎层完成的,因此很多存储引擎包括InnoDB, MyISAM, NDB等都支持分区功能.但也并不是所有的存储引擎都支持分区.在使用分区前, ...

  3. PAT Basic 1052

    1052 卖个萌 萌萌哒表情符号通常由“手”.“眼”.“口”三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请 ...

  4. leetcode刷题——双指针

    知识点 专题-B-双指针 题目: 题解: CS-Notes Algorithm_Interview_Notes-Chinese awesome-algorithm zcy19941015的博客

  5. ES6(Module模块化)

    模块化 ES6的模块化的基本规则或特点: 1:每一个模块只加载一次, 每一个JS只执行一次, 如果下次再去加载同目录下同文件,直接从内存中读取. 一个模块就是一个单例,或者说就是一个对象: 2:每一个 ...

  6. awk支持多个记录分隔符的写法

    awk的-F参数可以指定新的记录分隔符,有些时候可能需求指定多个分隔符,比如下面的内容 width:720 height:360 如果需要取出width和height后面的值的话,一般大家会这样做,即 ...

  7. vuex相关知识点

    vuex简单理解转载博客 vuex从入门到入门------state:从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态------Getters:可以很容易地在任何组件中使用它- ...

  8. Codeforces Round #352 (Div. 1) B. Robin Hood

    B. Robin Hood 讲道理:这种题我是绝对不去(敢)碰的.比赛时被这个题坑了一把,对于我这种不A不罢休的人来说就算看题解也要得到一个Accepted. 这题网上有很多题解,我自己是很难做出来的 ...

  9. oracle create directory

    1.新建directory的语法 CREATE [OR REPLACE] DIRECTORY directory AS 'pathname'; 例如: create or replace direct ...

  10. 【bzoj3489】A simple rmq problem 三维KD-tree

    题目描述 因为是OJ上的题,就简单点好了.给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可能大.如果找不到这样的数,则直接输出0.我会 ...