`
tudusi
  • 浏览: 1085219 次
文章分类
社区版块
存档分类
最新评论

[ACM]恭喜发财 利是窦来

 
阅读更多

在中国,过春节时人们有给孩子压岁钱(粤语称为利是)的习俗。

最早的压岁钱出现于汉代,又叫压胜钱,并不在市面上流通,而是铸成钱币形式的玩赏物,有避邪的功能。钱币正面一般铸有“万岁千秋”、“去殃除凶”等吉祥话和龙凤、龟蛇、双鱼等吉祥图案。

据说嘉兴府有一户姓管的人家,夫妻老年得子,十分珍爱。在年三十晚上,为防止“祟”来侵扰一直逗孩子玩,小孩用红纸包了八枚铜钱,包了又拆,拆了又包,睡下以后,包着的八枚铜钱就放在枕边。半夜里,一阵阴风吹过,黑矮的小人正要用他的白手摸孩子的头,突然孩子枕边迸出一道金光,祟尖叫着逃跑了。

于是这件事传扬开来,大家纷纷效仿,在大年夜用红纸包上钱给孩子,祟就不敢再来侵扰了。因而人们把这种钱叫“压祟钱”,“祟”与“岁”发音相同,日久天长,就被称为 “压岁钱”了。

现在有 N 个人,他们都有小孩,春节来了,他们要发压岁钱给朋友的小孩,而他们自己的小孩也会收到压岁钱。为了简单,他们在发压岁钱的时候,使用以下的计算方法,譬如某甲有 100 块,它要给另外三个人的小孩发压岁钱,则每个小孩会分到 100/3 = 33 块,剩余的 1 块就不发了。

给你这 N 个人的信息,以及他们把压岁钱发给了谁的小孩,请你计算他们每个人的小孩收到的压岁钱和他们发出去的压岁钱的差额是多少。

输入

第 1 行: 一个整数 N(2 <= N <= 10)
第 2..N+1 行: 每行是一个人名,每个名字不超过 14 个字符
第 N+2..结束: N 组按照以下规则组织的数据:
组中的第一行为送出压岁钱的人名。
第二行包括两个数字,第一个是该人有多少钱(0~2000),第二个是它要把钱发给几个人的小孩,用 NGi表示(0 ≤ NGi≤ N-1).
如果 NGi为非零,则下面的 NGi行会列出接受压岁钱的人的名字。

输入样例

5
dave
laura
owen
vick
amr
dave
200 3
laura
owen
vick
owen
500 1
dave
amr
150 2
vick
owen
laura
0 2
amr
vick
vick
0 0 

输出格式

输出为 N 行,每行上是一个人名与它收到和送出的压岁钱之差额,这两项之间有一个空格。这 N 行的顺序应该和输入中第 2~N+1 行的顺序相同。

输出样例

dave 302 laura 66 owen -359 vick 141 amr -150 
测试输入帮助,input (新窗口) 期待的输出帮助,expectedoutput (新窗口) 时间限制帮助,timelimit (新窗口) 内存限制帮助,memlimit (新窗口) 额外进程帮助,nproc (新窗口) 测试用例 2
以文本方式显示
  1. 5↵
  2. dave↵
  3. laura↵
  4. owen↵
  5. vick↵
  6. amr↵
  7. dave↵
  8. 2003↵
  9. laura↵
  10. owen↵
  11. vick↵
  12. owen↵
  13. 5001↵
  14. dave↵
  15. amr↵
  16. 1502↵
  17. vick↵
  18. owen↵
  19. laura↵
  20. 02↵
  21. amr↵
  22. vick↵
  23. vick↵
  24. 00↵
以文本方式显示
  1. dave302↵
  2. laura66↵
  3. owen-359↵
  4. vick141↵
  5. amr-150↵
1秒 64M 0

这个题如果用map来解决这相对简便,但是使用map解决有一个问题需要注意,就是map内的元素默认是按Key升序排序的,而题目中期待的输出是按照输入的顺序输出,所以需要想办法按输入顺序输出结果map中的元素,网上有人使用重新定义一个struct,在struct中定义一个index,表示key的输入顺序,然后在map中自定义排序规则,使其按照index升序排序,方法见http://www.cnblogs.com/pozen/articles/1429553.html,这种方法固然解决了问题,但是得不偿失,我采用的是重新定义一个字符串数组用于存放name(当然是按输入的顺序存放),输出的时候顺序从该字符串数组中取出元素,然后再去map中获取相应的value(map中根据指定的key获取value很方便,直接用map_name[key])就可以了,这样就解决了问题,代码如下:

再附上c语言代码,代码行数相同,采用结构体:


分享到:
评论

相关推荐

    cdc-acm.rar_CDC-ACM_V2 _cdc acm

    总的来说,CDC-ACM驱动程序是Linux系统中不可或缺的一部分,它使得非传统串行设备通过USB接口能够被系统识别并发挥其应有的功能,极大地扩展了Linux平台的硬件兼容性。了解并掌握 CDC-ACM驱动的工作原理和使用方法,...

    acm试题答案acm

    【标题】"acm试题答案acm" 涉及的主要知识点是ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest,简称ICPC或ACM/ICPC)的解题策略与技巧,以及如何寻找和理解比赛题目答案。ACM是一项...

    ACM.rar_ACM_ACM Hwang .p_ACM java_pku 1689 rubbery_ppt

    【标题】"ACM.rar" 是一个压缩文件,其中包含了与 ACM(国际大学生程序设计竞赛,简称ACM)相关的学习资料。"ACM_ACM Hwang .p" 暗示了这个压缩包可能包含由 ACM 专家 Hwang 教授的一些教程或讲义,这些材料通常对...

    ACM ACM ACM讲义.ppt

    总的来说,ACM程序设计大赛不仅是对编程技能的考验,更是对参赛者逻辑思维、问题解决能力和数学素养的全面挑战。通过这样的比赛,学生不仅能提升自己的专业技能,还能培养团队合作精神和应对压力的能力。

    acmacm经典题库

    "acmacm经典题库"是一个专门为ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)参赛...对于准备参加ACM竞赛的学生或者对算法有兴趣的开发者来说,"acmacm经典题库"是一个不可多得的资源。

    ACM PRO ACM PRO ACM PRO

    ACM PRO ACM PROACM PRO ACM PROACM PRO ACM PRO

    高通/MTK平台ACM串口驱动(USB转ACM串口)

    在IT领域,ACM(Abstract Control Module)串口驱动是一种重要的接口技术,它允许通过USB(Universal Serial Bus)连接来模拟传统的串行通信接口。在本文中,我们将深入探讨高通和MTK平台上的ACM串口驱动以及如何...

    ACM考试题 ACM程序设计

    ### ACM程序设计基础知识点 #### 一、ACM竞赛概览 - **组织机构与活动**: 本课程由东北林业大学陈宇老师负责,通过邮箱Lg_chenyu@yahoo.com.cn进行联系。课程的主要目的是介绍ACM程序设计的基础概念及入门技巧。 - ...

    上海交大ACM模板_上海交大ACM模板_ACM模板_

    "上海交大ACM模板.pdf"这份文档很可能是对这些知识点的详细讲解,包括原理介绍、代码示例和实战技巧,对于准备ACM竞赛或者考研复试的学生来说是一份非常宝贵的资源。通过深入学习和实践,可以提升解决实际问题的能力...

    ACM面试题 ACM ACM ACM

    ACM面试题解析 从给定的文件中,我们可以总结出四个不同的问题,每个问题都有其独特的解决方案和要点。 试题一:青蛙相遇问题 该问题的核心是判断两只青蛙是否能够相遇,并计算出它们相遇所需要的跳跃次数。为了...

    acm课件1 初识acm

    总的来说,ACM竞赛是一个极具挑战性的国际性平台,它锻炼了参赛者的技术能力、团队合作精神和应对压力的能力,对于培养未来的IT领导者具有重要意义。对于学生而言,参与ACM不仅有助于提高专业技能,还能为未来的职业...

    ACM.rar_acm zju 2830_acm 网站源码_acm.zju.edu.cn_浙大acm_浙大oj网站

    首先,我们来探讨一下ACM竞赛的核心——算法设计。ACM竞赛要求参赛者在有限的时间内编写程序解决一系列复杂问题,这就需要对各种算法有深入理解和熟练运用,包括但不限于排序算法(如快速排序、归并排序)、搜索算法...

    acm模板_acm模板

    ACM 模板详解 ACM(Association for Computing Machinery)模板是指一类用于记录算法竞赛代码的模板,通常包含了数据结构、算法、数学公式等多方面的知识点。本文将对 ACM 模板的结构和内容进行详细的解释,并对...

    浙江大学ACM题解 ACM

    这些资源对于准备参加ACM竞赛的学生或是对算法和编程挑战有兴趣的人士来说,是极其宝贵的资料。 【描述】中的"包括所有的题目和大部分解题代码"意味着这个压缩包涵盖了浙大ACM竞赛的全部题目,这些题目可能来自历年...

    acm的jar包及acm源码

    2. **IO流处理**:ACM库可能会使用Java的IO流来处理输入和输出,熟悉BufferedReader、PrintWriter等类对于理解和使用这个库是必要的。 3. **算法和数据结构**:ACM竞赛通常涉及复杂算法和高效数据结构的运用,熟悉...

    EFM32外设模块—ACMP

    ACMP模块在低功耗模式下能够保持运行,因此对于需要电池供电的应用来说非常适合。它支持在EM0到EM3几种不同的能耗模式下工作,从而实现在系统不同运行状态下的电源管理。EM0为最高性能模式,EM3为最低功耗模式。 ...

    acm.rar_ACM java_java package acm

    总的来说,"acm.jar" 是一个专门为ACM算法竞赛设计的工具库,它为参赛者提供了便利的输入输出机制、图形绘制工具、数学函数以及数据结构实现,使得参赛者能够更高效地编写和测试代码,从而在紧张的竞赛环境中提升...

    acm.rar_Fan Problem ACM

    标题中的"acm.rar_Fan Problem ACM"表明这是一个与ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)相关的压缩文件,其中包含了名为"Fan Problem"的题目。ACM竞赛是全球范围内极具影响...

    ACM培训资料(ACM)

    ACM竞赛的核心在于解决各种复杂问题,这些问题往往需要高效且优化的算法来解答。以下将从几个关键知识点进行深入解析: 1. **基础算法**:ACM竞赛中,基础算法如排序(快速排序、归并排序、堆排序等)、搜索(二分...

    WRT3200ACM.zip

    总的来说,这个压缩包包含了对Linksys WRT3200ACM路由器进行固件升级所需的所有文件。用户可以使用这些文件来保持其路由器的软件是最新的,以获取最佳性能和安全特性。在执行任何升级操作之前,用户应确保阅读相关...

Global site tag (gtag.js) - Google Analytics