201001 - 互送礼物

题解bys00000b

使用模拟算法(模拟算法即按照题目所描述的方式运行,最终得到答案。)

需要使用合适的数据结构来进行模拟

题目分析:按题目的要求使用模拟算法,可以使用结构体来贮存,还可以用STL的map,要注意除数为0的情况

AC代码

#include <bits/stdc++.h>
using namespace std;

map<string,int>ans;

int main() {

int n,money;
cin>>n;
string name[15],s,Friend;
for(int i=1;i<=n;i++)
	cin>>name[i];
for(int i=1,num;i<=n;i++)
{
	cin>>s>>money>>num;
	for(int j=1;j<=num;j++)
	{
		cin>>Friend;
		ans[Friend]+=money/num;
	}
	if(num!=0)
		ans[s]=ans[s]-money+money%num;
}
for(int i=1;i<=n;i++)
	cout<<name[i]<<' '<<ans[name[i]]<<endl;
return 0;
} //过不了就是你复制错了,我AC了