1 条题解

  • 0
    @ 2025-8-24 21:22:24

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Aoki_灏
    **

    搬运于2025-08-24 21:22:23,当前版本为作者最后更新于2017-10-08 14:31:41,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这里萌新

    不会什么高级方法

    全是非常土的方法所以简单易懂

    这里重新认真地开始写题解

    #include <bits/stdc++.h>
    #define N 1000000
    using namespace std;
    int n,x,h;
    char s[N],t[N];
    struct node// 结构体存名字和钱 我爱结构体
    {
        char name[20];
        int sum;
    };
    struct node q[N];
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>q[i].name;
       for(int i=1;i<=n;i++)
       {
           scanf("%s",s);
           for(int j=1;j<=n;j++)
              if(strcmp(s,q[j].name)==0){x=j;break;}//比较名字,看是谁,记下j,千万不要只比较首字母。我之前就这样偷懒然后没a
           int a,b;
           cin>>a>>b;
            if(b==0)continue;//这里注意一定要判断,毕竟0不能做除数,要不然会炸
           int y=a/b;
           int m=y*b;//算每人分到的钱数
           q[x].sum-=m; //减钱
           for(int k=1;k<=b;k++)
           {
              scanf("%s",s);
              for(int g=1;g<=n;g++)
                  if(strcmp(s,q[g].name)==0){h=g;break;}//分钱 同上不要只比较首字母mm
                q[h].sum+=y;//加钱
           }
       }
        for(int i=1;i<=n;i++)
            cout<<q[i].name<<' '<<q[i].sum<<endl;
        return 0;
    }
    //最后再次说明这题我的方法非常土鳖。。。易懂真的、
    //注意的事项前面都写了
    
    • 1

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

    信息

    ID
    202
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者