POJ ACM习题【No.2403】

Hay Points
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 3255 Accepted: 2112

Description

Each employee of a bureaucracy has a job description - a few paragraphs that describe the responsibilities of the job. The employee's job description, combined with other factors, such as seniority, is used to determine his or her salary.
The Hay Point system frees the Human Resources department from having to make an intelligent judgement as to the value of the employee; the job description is merely scanned for words and phrases that indicate responsibility. In particular, job descriptions that indicate control over a large budget or management over a large number of people yield high Hay Point scores.

You are to implement a simplified Hay Point system. You will be given a Hay Point dictionary and a number of job descriptions. For each job description you are to compute the salary associated with the job, according to the system.

Input

The first line of input contains 2 positive integers: m <= 1000, the number of words in the Hay Point dictionary, and n <= 100, the number of job descriptions. m lines follow; each contains a word (a string of up to 16 lower-case letters) and a dollar value (a integer number between 0 and 1,000,000). Following the dictionary are the n job descriptions. Each job description consists of one or more lines of text; for your convenience the text has been converted to lower case and has no characters other than letters, numbers, and spaces. Each job description is terminated by a line containing a period.

Output

For each job description, output the corresponding salary computed as the sum of the Hay Point values for all words that appear in the description. Words that do not appear in the dictionary have a value of 0.

Sample Input

7 2
administer 100000
spending 200000
manage 50000
responsibility 25000
expertise 100
skill 50
money 75000
the incumbent will administer the spending of kindergarden milk money
and exercise responsibility for making change he or she will share
responsibility for the task of managing the money with the assistant
whose skill and expertise shall ensure the successful spending exercise
.
this individual must have the skill to perform a heart transplant and
expertise in rocket science
.

Sample Output

700150
150

 

此题需要注意:

1.可能出现多个单词重复计数,因此最好对字符串进行遍历

2.注意前后的空格,以及单词中间的多个空格。

 

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		
		String[] fLine = cin.nextLine().split(" ");
		int kwNum = Integer.valueOf(fLine[0]).intValue();
		int descNum = Integer.valueOf(fLine[1]).intValue();
		
		HashMap hm = new HashMap();
		
		for(int i = 0; i < kwNum; i++)
		{
			String[] str = cin.nextLine().split(" ");
			hm.put(str[0], str[1]);
		}
		
		for(int i = 0; i < descNum; i++)
		{
			StringBuffer sb = new StringBuffer();
			String job = null;
			int salary = 0;
			
			while(true)
			{
				job = cin.nextLine();
				if(job.equals("."))
					break;
				else
					sb.append(job + " ");
			}
			job = sb.toString().trim();
			
			if(job.length() == 0)
			{
				System.out.println("0");
				continue;
			}
			int eIndex = 0;
			String word = null;
			while(true)
			{
				eIndex = job.indexOf(" ");
				if(eIndex == -1 || eIndex == 0)
				{
					if(hm.containsKey(job))
						salary += Integer.valueOf((String)hm.get(job));
					break;
				}
				word = job.substring(0, eIndex);
				job = job.substring(eIndex + 1).trim();
				
				if(hm.containsKey(word))
					salary += Integer.valueOf((String)hm.get(word));
			}
			System.out.println(salary);
		}

	}

}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值