1 条题解

  • 0
    @ 2023-3-13 12:04:26

    C++ :

    #include<iostream>
    #include<cstring>
    using namespace std;
    struct person{
    string name;
    int money;
    }a[12];         //存储每个人的名字和钱数 
    string name_out,name_in;
    int n,mout,num,sum;
    int main(){
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i].name;//输入所有人名字 
    for(int i=1;i<=n;i++){
        sum=1;
        cin>>name_out>>mout>>num;//输入姓名,钱数,收礼人数 
        if(!num||!mout) continue;//如果给别人的钱数或人数为0,不进行运算 
        for(int j=1;j<=num;j++){
            cin>>name_in;//收礼人姓名 
            for(int k=1;k<=n;k++){
                if(sum&&a[k].name==name_out){
                    sum--;//用sum保证只减去一次 
                    a[k].money-=mout/num*num;//表示减去给别人的钱数 
                }
                if(a[k].name==name_in) a[k].money+=mout/num;//增加钱数 
            }
        }
    }
    for(int i=1;i<=n;i++) cout<<a[i].name<<" "<<a[i].money<<endl;//输出 
    }
    
    • 1

    【基础】贪婪的送礼者Greedy Gift Givers(USACO1.1)

    信息

    ID
    1993
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者