洛谷 1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers

来源:互联网 发布:cf烟雾头软件 编辑:程序博客网 时间:2024/05/18 01:07

题目:
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;}
原创粉丝点击