[洛谷 1201]Greedy Gift Givers

题目链接

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;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注