UVA119 题解

题目链接

题目分析

模拟题意即可,主题库里的这一题和它差不多,有一些细节需要注意。

  1. 有一些数据会出现某人给 \(0\) 个人送礼物,此时需要特判,否则将出现运行时错误。

  2. 此题在输出时不能有多余的空行,需要注意。

  3. 当准备的钱不能被需要送的人数整除的时候需要退还剩余的钱。

  4. 此题是多测,注意要清空。

Code

#include<bits/stdc++.h>
using namespace std;
int n,num,cost,t;
string s[15],name,x;
bool flag;
map<string,int> ans;
int main(){
	while(cin>>n){
		if(flag) cout<<endl;
		flag=1;
		for(int i=1;i<=n;i++) cin>>s[i];
		for(int i=1;i<=n;i++){
			cin>>name;
			cin>>t>>num;
			if(!num) continue;
			cost=t/num;
			ans[name]-=cost*num;
			while(num--){
				cin>>x;
				ans[x]+=cost;
			}
		}
		for(int i=1;i<=n;i++){
			cout<<s[i]<<" "<<ans[s[i]]<<endl;
			ans[s[i]]=0;
		}
	}
	return 0;
}
posted @ 2024-01-25 08:06  ZnHF  阅读(1)  评论(0编辑  收藏  举报