(第四场)G Maximum Mode 【YY+暴力】
链接:https://www.nowcoder.com/acm/contest/142/G
来源:牛客网
题目描述
输入描述:
- There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:
The first line contains two integers n and m (1 ≤ n ≤ 105, 0 ≤ m < n) -- the length of the sequence and the number of integers to delete.
The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 109) denoting the sequence.
It is guaranteed that the sum of all n does not exceed 106.
输出描述:
- For each test case, output an integer denoting the only maximum mode, or -1 if Chiaki cannot achieve it.
case:
input:
5
5 0
2 2 3 3 4
5 1
2 2 3 3 4
5 2
2 2 3 3 4
5 3
2 2 3 3 4
5 4
2 2 3 3 4
output:
-1
3
3
3
4
题目大意:
给N个数, 删掉M个数,使得剩下的数众数最大,求那个众数。
官方题解:
•枚举答案,考虑需要删⼏几个数才能使之变成众数
•出现次数多余它的都要被删到次数比它小
•剩下的随便便删
大概思路(本人理解):
枚举出现的次数,因为出现次数多的更有可能成为众数,所以从多到少枚举出现的次数,其次就是相同出现次数的话取最大的那个(也有可能是由比它出现多的减过来的),简单来说就是用M次删除把最大的那个众数弄出来。
不过要注意一点就是:优化输入!!!本人没有优化输入前TLE了五次,当然,这里包括了更傻的每个案例都重新定义映射和动态数组,想这样省略初始化,但是太慢了。。。还是老老实实初始化的好。(哎,都在代码里了)
AC code:
- #include <map>
- #include <vector>
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- #define INF 0x3f3f3f3f
- #define ll long long int
- using namespace std;
- const int MAXN = 1e5+;
- ll a[MAXN]; ///原序列
- ll c[MAXN]; ///c[x]出现次数为 X 的最大值
- ll T_case, N, K;
- vector<ll> num_len[MAXN]; ///出现次数为 X 的数有多少个
- map<ll, ll> mmp; ///记录出现次数
- inline ll read() ///优化输入
- {
- register ll c = getchar(), flag = , sum = ;
- while(c > '' || c < '')
- {
- if(c == '-') flag = -;
- c = getchar();
- }
- while(c <= '' && c >= '')
- {
- sum = sum*+c-'';
- c = getchar();
- }
- return flag*sum;
- }
- int main()
- {
- scanf("%lld", &T_case);
- while(T_case--)
- {
- N = read(); K = read();
- mmp.clear();
- for(ll i = ; i <= N; i++)
- {
- num_len[i].clear();
- c[i] = ;
- }
- for(int i = ; i <= N; i++)
- {
- a[i] = read();
- if(mmp.count(a[i]) == ) mmp[a[i]] = ;
- else mmp[a[i]]++;
- }
- for(int i = ; i <= N; i++)
- {
- ll x = mmp[a[i]]; ///a[i]出现的次数
- if(x)
- {
- num_len[x].push_back(a[i]); ///增加出现次数为 x 的元素
- c[x] = max(c[x], a[i]); ///更新出现次数为 X 的最大值
- mmp[a[i]] = ; ///出现次数清零,避免重复加
- }
- }
- ll res = -; ///当前满足成为众数的最大值
- ll pre = ; ///使当前的数成为众数的需要的删除次数
- ll ans = -; ///答案
- for(int len = N; len > ; len--) ///枚举出现次数
- {
- ll xx = num_len[len].size(); ///出现次数为len的数量
- pre+=xx;
- if(xx)
- {
- res = max(res, c[len]); ///当前的众数有可能由上一个众数退化而来
- if(pre- <= K) ///如果剩余的删除次数满足需要删除次数的条件
- {
- ans=max(ans, res); ///更新答案
- }
- else break; ///剩余的删除次数无法满足当前长度众数的要求的,那之后的也无法满足了
- }
- K-=pre;
- if(K<) break; ///无剩余操作次数
- }
- printf("%lld\n", ans);
- }
- return ;
- }
(第四场)G Maximum Mode 【YY+暴力】的更多相关文章
- 牛客多校第四场 G Maximum Mode
链接:https://www.nowcoder.com/acm/contest/142/G来源:牛客网 The mode of an integer sequence is the value tha ...
- [2019牛客多校第四场][G. Tree]
题目链接:https://ac.nowcoder.com/acm/contest/884/G 题目大意:给定一个树\(A\),再给出\(t\)次询问,问\(A\)中有多少连通子图与树\(B_i\)同构 ...
- 【春训团队赛第四场】补题 | MST上倍增 | LCA | DAG上最长路 | 思维 | 素数筛 | 找规律 | 计几 | 背包 | 并查集
春训团队赛第四场 ID A B C D E F G H I J K L M AC O O O O O O O O O 补题 ? ? O O 传送门 题目链接(CF Gym102021) 题解链接(pd ...
- 2018 HDU多校第四场赛后补题
2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...
- 牛客网NOIP赛前集训营-提高组(第四场)游记
牛客网NOIP赛前集训营-提高组(第四场)游记 动态点分治 题目大意: \(T(t\le10000)\)组询问,求\([l,r]\)中\(k(l,r,k<2^{63})\)的非负整数次幂的数的个 ...
- CTF-i春秋网鼎杯第四场部分writeup
CTF-i春秋网鼎杯第四场部分writeup 因为我们组的比赛是在第四场,所以前两次都是群里扔过来几道题然后做,也不知道什么原因第三场的题目没人发,所以就没做,昨天打了第四场,简直是被虐着打. she ...
- 牛客网NOIP赛前集训营-提高组(第四场)B区间
牛客网NOIP赛前集训营-提高组(第四场)B区间 题目描述 给出一个序列$ a_1 \dots a_n$. 定义一个区间 \([l,r]\) 是好的,当且仅当这个区间中存在一个 \(i\),使得 ...
- 「CSP-S模拟赛」2019第四场
「CSP-S模拟赛」2019第四场 T1 「JOI 2014 Final」JOI 徽章 题目 考场思考(正解) T2 「JOI 2015 Final」分蛋糕 2 题目 考场思考(正解) T3 「CQO ...
- NOI.AC NOIP模拟赛 第四场 补记
NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\ ...
- 牛客网暑期ACM多校训练营(第四场):A Ternary String(欧拉降幂)
链接:牛客网暑期ACM多校训练营(第四场):A Ternary String 题意:给出一段数列 s,只包含 0.1.2 三种数.每秒在每个 2 后面会插入一个 1 ,每个 1 后面会插入一个 0,之 ...
随机推荐
- Qt客户端阿里云服上传文件
整体原理: 阿里云提供了c程序上传文件到阿里云服务器的sdk工具包,将这个工具包继承在自己的客户端,调用接口即可实现上传文件. 前期准备: 1.阿里云c程序客户端的sdk,下载地址:https://h ...
- spring利用cors处理跨域问题
参考 http://blog.csdn.net/isea533/article/details/50449907 写的很全面 http://blog.csdn.net/a317560315/artic ...
- python 管理多版本之pyenv
一, [root@management ~]# pyenv install -listAvailable versions: 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3 ...
- Apache Beam中的函数式编程理念
不多说,直接上干货! Apache Beam中的函数式编程理念 Apache Beam的编程范式借鉴了函数式编程的概念,从工程和实现角度向命令式妥协. 编程的领域里有三大流派:函数式.命令式.逻辑式. ...
- TOJ 2939 解救小Q
描述 小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她.迷宫里面有一些陷阱,一旦走到陷阱里,就会被困身亡:(,迷宫里还有一些古老的传送阵,一旦走到传送阵上,会强制被传送到传送阵的另一头. ...
- Nginx启动关闭和重启、文档直接下载不阅览
nginx启动相关 启动:sbin/nginx -c conf/nginx.conf 关闭:sbin/nginx -s stop 重启(重新加载配置文件):sbin/nginx -s reload 检 ...
- 将 flask 中的 session 存储到 SQLite 数据库中
将 flask 中的 session 存储到 SQLite 数据库中 使用 flask 构建服务器后端时,常需要在浏览器端存储 cookie 用于识别不同用户,根据不同的 cookie 判断出当前请求 ...
- linux下(ubuntu)反删除(误删恢复)与回收站制作
刚刚有个小伙伴不小心删了他写了好几的天代码,为他心疼之余帮他找回了文件. 想到我之前也常常误删一些文件,就干脆分享一下我的反删除方法,并说说我做的回收站(好low的,求大神指点) 首先是反删除软件ex ...
- C# 读写xml、excel、word、ppt、access
C# 读写xml.excel.word.access 这里只是起个头,不做深入展开,方便以后用到参考 读写xml,主要使用.net 的xml下的document using System;using ...
- cf1072D. Minimum path(BFS)
题意 题目链接 给出一个\(n \times n\)的矩阵,允许修改\(k\)次,求一条从\((1, 1)\)到\((n, n)\)的路径.要求字典序最小 Sol 很显然的一个思路是对于每个点,预处理 ...