• Educational Codeforces Round 108 (Div. 2), C map套vector存储


    地址  Problem - C - Codeforces

    题目

     

    题意

    一个学校有n个人参加比赛,他们分别属于ui队,每个人的能力值为si

    当每个队需要1~n个人的时候,这个学校能参加的人的能力值和最大为多少

    解析

    map<int,vector<int>>存储不会爆

    每一队直接处理出队伍人数为1~n时的能力值最大和,这样不会超时,看代码

    代码

    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <map>
    
    using namespace std;
    
    typedef long long LL;
    const int N = 2e5+10;
    
    int b[N],c[N];
    int main()
    {
        int t;
        cin >> t;
        while(t --)
        {
            int n;
            scanf("%d", &n);
            map<int,vector<LL>> a;//存第二波输入
            
            for(int i = 1; i <= n; i ++)    scanf("%d", &b[i]); //存所属队
            for(int i = 1; i <= n; i ++){
                int x;
                scanf("%d", &x);
                a[b[i]].push_back(x);
            }
            
            vector<LL> res(n+1);//存结果
            for(auto p1:a)//遍历每一队
            {
                vector<LL> &p = p1.second;
                sort(p.begin(), p.end());
                
                int len = p.size();
                
                for(int i = 1; i < len; ++i)
                    p[i] += p[i-1];
                    
                for(int i = 1; i <= len; i ++)
                    res[i]+=p[len-1]-((len%i)?p[len%i-1]:0LL);//把这一队的算出来
            }
            for(int i = 1; i <= n; i ++)
                cout << res[i] << ' ';
            puts("");
            
        }
        return 0;
    }
  • 相关阅读:
    Scala语言
    Eclipse的各种问题
    Java:
    Come on
    问题:实现继承的抽象方法
    Android:报错AndroidManifest.xml file missing
    正则表达式
    Android:相对布局Relativeyout中的属性解释
    Android:生命周期案例
    Android:设置APP全屏、横屏、竖屏、常亮的方法
  • 原文地址:https://www.cnblogs.com/la-la-wanf/p/14723931.html
Copyright © 2020-2023  润新知