zoukankan      html  css  js  c++  java
  • Codeforces 1082C Multi-Subject Competition(前缀+思维)

    题目链接:Multi-Subject Competition

    题意:给定n名选手,每名选手都有唯一选择的科目si和对应的能力水平。并且给定科目数量为m。求选定若干个科目,并且每个科目参与选手数量相同的情况下的最大能力水平。

    题解:每位选手扔到对应的科目里面从1-m遍历科目,能力值排序下,维护下能力值和,大于0就给到当前位置人数答案加上该值,否则跳出(给负价值是没有意义的),最后遍历一遍人数对应的价值,拿最大的即可。

     1 #include <vector>
     2 #include <cstdio>
     3 #include <iostream>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 const int N=1e5+10;
     8 int ans[N];
     9 vector <int> v[N];
    10 
    11 int main(){
    12     int n,m,s,r,mx=0;
    13     scanf("%d%d",&n,&m);
    14     for(int i=1;i<=n;i++){
    15         scanf("%d%d",&s,&r);
    16         v[s].push_back(r);
    17     }
    18     for(int i=1;i<=m;i++){
    19         int sum=0,sz=v[i].size();
    20         sort(v[i].begin(),v[i].end());
    21         mx=max(mx,sz);
    22         for(int j=sz-1;j>=0;j--){
    23             sum+=v[i][j];
    24             if(sum>=0) ans[sz-j]+=sum;
    25             else break;
    26         }
    27     }
    28     int res=0;
    29     for(int i=1;i<=mx;i++) res=max(res,ans[i]);
    30     printf("%d
    ",res);
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    背下来就是电脑高手(转)
    split+ Pattern切割字符串
    java中方法中声明三个点“...”作用
    MRUnit测试
    configuration默认设置
    chmod|chown|chgrp和用法和区别
    hadoop 一些文件操作
    关闭SVN服务
    Hadoop如何计算map数和reduce数
    链式mapreduce
  • 原文地址:https://www.cnblogs.com/pavtlly/p/10039827.html
Copyright © 2011-2022 走看看