题目:
https://www.luogu.org/problem/show?pid=1201
虽然最多只有10个人,但仍然发生了hash冲突……
所以,以后能用map就用map!!!!
总结:
1.坑爹字符串题用map;
2.0不能为除数,会RE,以后看到除号要敏感;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
const int MAXN=1200001;
int base=137,mod=1e6+3;
string ss[101],s;
int n,cost[MAXN];
int tot,co;
map<string,int >hash;
//int hash(string s)
//{
// int len=s.size(),num=0;
// for(int i=0;i<len;i++)
// num=(num+(s[i]-'A'+2)*base)%mod;
// return num;
//}
struct hh
{
string name;
int cost;
}ma[MAXN];
void solve()
{
int cnt;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cin>>ss[i],hash[ss[i]]=i;
}
for(int i=1;i<=n;i++)
{
cin>>s>>tot>>co;
if(!co) continue;
int x=hash[s];
cost[x]=tot;
if(co) ma[x].cost+=tot%co;
for(int j=1;j<=co;j++)
{
string s2;
cin>>s2;
ma[hash[s2]].cost +=tot/co;
}
}
for(int i=1;i<=n;i++)
cout<<ss[i]<<" "<<ma[hash[ss[i]]].cost-cost[hash[ss[i]]]<<endl;
}
int main()
{
solve();
return 0;
}