链接:

https://www.nowcoder.com/login?callBack=%2Facm%2Fcontest%2F142%2FG

题意:

给定n个数, 要求删去恰好m个数后的最大总数是多少。

分析:

要使一个数是众数, 只要比他大的数的数量都比自己小就行。

预处理出全部出现次数的最大数(例如, 出现3次最大的是1,出现2次最大的是2等等)。

然后从最大的次数开始枚举, 只关注该次数和比该次数大的数(前缀和),求出每次删的minDel即可。

#include <bits/stdc++.h>
using namespace std;
const int maxN = 1e5 + 7;
map<int, int> cnt, Max, t;
int pre[maxN];
int n, m;
int judge(){int sum = 0, k = 0, ans = -1;for(auto it = Max.rbegin(); it != Max.rend(); it++){int a = it -> first, b = it -> second; //a是次数, b是该次数下最大的数k += t[a];//k是当前有多少种数sum += a * t[a]; //只考虑自己和次数比自己大的数的总数int minDel = sum - (a-1) * k - 1;  //要减去的数if(minDel <= m){//只要该数小于等于m即可, 剩下的m - minDel随便减ans = max(ans, b);}}return ans;
}
int main() {int T;scanf("%d", &T);while(T--) {cnt.clear();Max.clear();t.clear();scanf("%d %d", &n, &m);for(int i = 0; i < n; i++) {int num;scanf("%d", &num);cnt[num]++;}for(auto it : cnt){int a = it.first, b = it.second;Max[b] = max(Max[b], a);t[b]++;}printf("%d\n", judge());}
}

转载于:https://www.cnblogs.com/Jadon97/p/9438672.html

牛客网暑期ACM多校训练营(第四场)G Maximum Mode(思维)相关推荐

  1. 牛客网暑期ACM多校训练营(第九场)

    牛客网暑期ACM多校训练营(第九场) A. Circulant Matrix 做法:看到下标 \(xor\) 这种情况就想 \(FWT\),可是半天没思路,于是放弃了..其实这个 \(n\) 疯狂暗示 ...

  2. 牛客网暑期ACM多校训练营(第一场)

    牛客网暑期ACM多校训练营(第一场) A. Monotonic Matrix 考虑0和1的分界线,1和2的分界线,发现问题可以转化为两条不互相穿过的路径的方案数(可重叠),题解的做法就是把一条路径斜着 ...

  3. 牛客网暑期ACM多校训练营(第二场): H. travel(树形线头DP)

    链接:https://ac.nowcoder.com/acm/contest/140/H 来源:牛客网 题目描述 White Cloud has a tree with n nodes.The roo ...

  4. 牛客网暑期ACM多校训练营(第三场): E. Sort String(KMP)

    链接:https://www.nowcoder.com/acm/contest/141/E 来源:牛客网 题目描述 Eddy likes to play with string which is a ...

  5. 牛客网暑期ACM多校训练营(第三场): C. Shuffle Cards(splay)

    链接:https://www.nowcoder.com/acm/contest/141/C 来源:牛客网 题目描述 Eddy likes to play cards game since there ...

  6. 牛客网暑期ACM多校训练营(第二场)A .run

    链接:https://www.nowcoder.com/acm/contest/140/A 来源:牛客网 题目描述 White Cloud is exercising in the playgroun ...

  7. 牛客网暑期ACM多校训练营(第一场) J (莫队算法)

    题目链接:https://www.nowcoder.com/acm/contest/139/J 题目大意:给一个序列,进行q次查询,问1~l和r~n中有多少个不同的数字 题目思路:之前只是听说过莫队算 ...

  8. 牛客网暑期ACM多校训练营(第二场)J farm (二维树状数组)

    题目链接: https://www.nowcoder.com/acm/contest/140/J 思路: 都写在代码注释里了,非常好懂.. for_each函数可以去看一下,遍历起vector数组比较 ...

  9. 牛客网 暑期ACM多校训练营(第一场)J.Different Integers-区间两侧不同数字的个数-离线树状数组 or 可持久化线段树(主席树)...

    J.Different Integers 题意就是给你l,r,问你在区间两侧的[1,l]和[r,n]中,不同数的个数. 两种思路: 1.将数组长度扩大两倍,for(int i=n+1;i<=2* ...

  10. 牛客网暑期ACM多校训练营(第二场)D-money (dp)

    题目链接 题意 一共有n件商店,每个商店买卖东西的价格和不同,白兔想用差价挣钱,每次只能携带一种物品,问白兔最多赚多少的钱,和对应的交易次数 AC 两个变量分别记录当前买东西和买东西的剩余财富,财富越 ...

最新文章

  1. html中空标签的有什么,HTML常用标签,什么是空标签和可替换标签
  2. 使用Innobackupex快速搭建(修复)MySQL主从架构
  3. log4j.properties配置总结
  4. (单源最短路径)一文搞懂dijkstra算法
  5. 代理模式【介绍、静态代理、动态代理、入门、应用】
  6. 【GitHub教程】如何使用Eclipse将本地项目上传到github
  7. 迁移学习 迁移参数_迁移学习简介
  8. M​y​E​c​l​i​p​s​e​下​反​编​译​插​件​安​装​使​用​方​法
  9. 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
  10. linux串口环形缓冲区,能不能讲解下串口环形缓冲区的概念?
  11. u3d一个GameObject绑定两个AudioSource
  12. Powershell进阶学习(6) 部署 Windows PowerShell Web 访问
  13. webpack 了解
  14. 如何配置和使用Tomcat访问日志
  15. 【刷题】BZOJ 1003 [ZJOI2006]物流运输
  16. 文件拷贝--单一文件过大
  17. 网站锦囊(逐渐更新中)
  18. [转载] 关于Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdboot.exe 的详解
  19. “INNER JOIN”和“OUTER JOIN”有什么区别?
  20. 超全面!用户生命周期分析攻略

热门文章

  1. ajax send()的作用_AJAX(Asynchronous JavaScript And XML)
  2. android a20 i2c 通信,Android程序运行分析——中等复杂程度的NTAG I2C Demo为例(二)...
  3. qt编写的android菜单,Qt for Android实现与webview的交互
  4. git 设置用户只需要输入一次账号密码
  5. kubernetes视频教程笔记 (11)-pod容器生命周期、Init容器
  6. pdf文字无法复制怎么办?unlock解密pdf
  7. Instantiation of Chaincode using Fabric Node manifest for hyperledger/fabric-ccenv:latest not found
  8. SpringBoot 集成ElasticSearch(二)分页查询
  9. Linux学习(2)常用的命令
  10. 【Filter】基础知识