目录
显示
题目链接
https://www.luogu.org/problemnew/show/P1201
题解
还是模拟,但是坑点很多。
刚开始看中文版题面的时候对于钱没有整除的问题并没有给出一个清楚的解释,后来看了英文原版题面才把这个搞清楚。
#include <cstring>
#include <iostream>
#include <string>
#include <map>
using namespace std;
map<string,int> m;
struct people
{
string name;
int money;
}p[15];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>p[i].name;
m[p[i].name]=i;
}
for(int i=1;i<=n;i++)
{
string name;
cin>>name;
int x,y;
cin>>x>>y;
if(y==0)continue;
p[m[name]].money-=x/y*y;
//由于每个人收到的钱数均为整数,所以这里要把每个人收到的钱向下取整
for(int j=1;j<=y;j++)
{
cin>>name;
p[m[name]].money+=x/y;
}
}
for(int i=1;i<=n;i++)
cout<<p[i].name<<' '<<p[i].money<<endl;
return 0;
}