网易也这样考比赛?

djjlove_2008 2010-05-30 03:38:34
描述
有道为每位员工提供每工作日享受中午与晚上两顿餐费报销,每顿饭额度上限为X元。为了能够用这些钱吃得更丰盛,大家纷纷组成了各种饭团,每天中午和晚上扫荡清华科技园附近各大中小饭馆。
为了使报销过程更加方便,在每个饭团吃完饭的时候,由一个人付帐拿发票,这个人在发票上写上所有饭团成员的姓名,并且拿发票回去报销。如果平均每人的消费超过了额度上限,大家会将超出部分平均补给付帐的同事。
比如,某天中午A B C D E五人到某餐厅吃饭,消费5X + 5元,由A付款,B C D E每人补给A同事1元钱,A同事拿发票可报销得5X元。若消费5X – 5 元,则其他同事无需补钱,A同事拿发票直接报销得到5X – 5元。
由于目前公司的人越来越多,行政MM每天处理这些发票事务非常的繁琐,现在需要你来写一个程序,拿着所有的发票信息,统计一下需要分别给每个人报销多少钱。
输入
输入第一行有一个正整数T,表示下面有T个数据。
对于每个数据,其格式如下
第一行是一个正整数X,表示每个人一顿饭的额度上限,
第二行是一个正整数S,表示饭团报销的发票总数量,
接下来S行分别是每张发票的细节:
对于每一行 输入格式为
n m u1 u2 u3….un ux
n是一个正整数,表示该张发票的饭团人数,m也是一个正整数,表示消费金额总数。
u1..un分别是该饭团的名单,ux为付款人的姓名,ux一定是u1..un中间的一员。
数据中可能会包含一周甚至更长时间的数据,所以,由于每个人在不同时间会参与不同的饭团,所以有些人的名字会出现在好几行内,这是正常现象。

其中0<T<=10, 0<X<=100, 0<S<=10000, 0<n<=10, 0<m<=1000,所有员工的姓名都由大写字母组成,不为空且长度不超过10。
输出
每个数据按照员工姓名字典序,输出分别应该给每个人报销多少钱,如果某人的报销钱数为0,则不需要输出。
请在每组数据结束之后输出一个空行。
样例输入
2
20
4
3 61 A B C B
2 39 A B A
4 88 A B C D C
3 40 B C D B
15
4
3 61 A B C B
2 39 A B A
4 88 A B C D C
3 40 B C D B
样例输出
A 39
B 100
C 80

A 30
B 85
C 60
...全文
141 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
djjlove_2008 2010-06-04
  • 打赏
  • 举报
回复
谢谢各位了
fanster28_ 2010-05-30
  • 打赏
  • 举报
回复
水题一道
fanster28_ 2010-05-30
  • 打赏
  • 举报
回复
水题一道
cattycat 2010-05-30
  • 打赏
  • 举报
回复
选拔赛还是比较简单,可能最后一题稍有点难度吧
javaaaaaaa 2010-05-30
  • 打赏
  • 举报
回复
其实除了没行数据最后的那个付账的人,中间的人可以不存入MAP的
djh512 2010-05-30
  • 打赏
  • 举报
回复

#include<iostream>
#include<string>
#include<map>
using namespace std;

int main()
{
int row;
cin>>row;

int limit,num,total,n;
string str;

while(row--)
{
map<string,int> bill;
cin>>limit;
cin>>num;
while(num--)
{
cin>>n;
cin>>total;
if( total > n * limit )
total = n*limit;
while(n--)
{
cin>>str;
pair<string,int> s(str,0);
bill.insert(s);
}
cin>>str;

map<string,int>::iterator map_it = bill.begin();
while( map_it != bill.end() )
{
if(map_it->first==str)
map_it->second+=total;
++map_it;
}


}
map<string,int>::iterator map_it = bill.begin();
while( map_it != bill.end() )
{
if( map_it->second != 0)
cout<<map_it->first<<" "<<map_it->second<<endl;
++map_it;
}
}

return 0;
}
javaaaaaaa 2010-05-30
  • 打赏
  • 举报
回复
俺用Java做了,这题较简单。
hk_wind 2010-05-30
  • 打赏
  • 举报
回复
我也好想看看答案
sduxiaoxiang 2010-05-30
  • 打赏
  • 举报
回复
这个不是很难啊
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
枪手?
djjlove_2008 2010-05-30
  • 打赏
  • 举报
回复
有源码不,我参详下?
AlanBruce 2010-05-30
  • 打赏
  • 举报
回复
。。。。。。。


up

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧