传送门

 /*

 按值从大到小排序,记录下相应出现的次数并去重
枚举:从大到小枚举,如果能够通过删除其他数让当前这个数成为众数,则循环结束,输出此数,如果循环结束也没答案,输出-1
优先级:值优先 举例:
5 0
3 3 3 5 5
众数为3,且唯一,输出3
5 1
3 3 3 5 5
如果删除3,则3和5都出现两次,众数不唯一,如果删除5,众数为3,故当删除5时可以找到答案为3,故输出3
5 2
3 3 3 5 5
删除两个3后,众数为5,如果删除两个5,众数为3,但5>3,故要第一个操作,输出5 */
#include<iostream>
#include<cstdio>
#include<map>
#include<algorithm>
using namespace std;
const int maxn=1e5+; //a[] : 存储输入时的原数据
//v[] : a[]去重后保存在v[]中
//mymap : 用于记录某value出现的次数
int a[maxn];
int v[maxn];
map<int ,int >mymap; bool cmp(int a,int b)
{
return a>b;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
mymap.clear();
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",a+i); //按值从大到小排序
sort(a+,a+n+,cmp); //去重操作,并在map中记录下value对应的次数
int index=;
for(int i=;i<=n;i++)
{
if(i == )
v[++index]=a[i];
else if(a[i] != v[index])
v[++index]=a[i];
if(!mymap.count(a[i]))
mymap[a[i]]=;
mymap[a[i]]++;
} //从最大值开始枚举
int res=-;
for(int i=;i<=index;i++)
{
int s=;
for(int j=;j<=index;j++)
{
if(i != j && mymap[v[j]] >= mymap[v[i]])
s += mymap[v[j]]-mymap[v[i]]+;
}
//如果 s <= m
//说明可以通过删除其他数使当前数成为众数,且值最大
//跳出循环
if(s <= m)
{
res=v[i];
break;
}
}
printf("%d\n",res);
}
return ;
}

dalao代码

 #include<bits/stdc++.h>
using namespace std;
map<int,int> mp;
vector<pair<int,int> > v;
int n, m;
int cmp(pair<int,int> a,pair<int,int> b)
{
if(a.first != b.first)
return a.first > b.first;
else
return a.second > b.second;
} int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout.tie(); int t;
cin >> t;
while(t --)
{
mp.clear();
v.clear();
cin >> n >>m;
int k;
for(int i = ;i <= n;i ++)
{
cin >> k;
mp[k] ++;
} for(map<int,int>:: iterator it = mp.begin();it != mp.end();it ++)
{
pair<int,int> p(it->first,it->second);
v.push_back(p);
}
sort(v.begin(),v.end(),cmp); //pair fir表示数字 sec表示个数
int res = -;
for(int i = ;i < v.size();i ++)
{
int s = , t = v[i].first;
for(int j = ;j < v.size();j ++)
{
if(j == i) continue;
else if(j < i && v[j].second >= v[i].second) s += v[j].second - v[i].second + ;
else
{
if(v[j].second > v[i].second) s += v[j].second - v[i].second + ;
else if(v[j].second == v[i].second) s ++;
}
}
if(s <= m)
{
res = t;
break;
}
}
cout << res << endl;
}
return ;
}

(原)2018牛课多校第4场--G的更多相关文章

  1. 2018牛客多校第六场 G.Pikachu

    题意: 给出一棵n个点的树,每条边有边权.对这个树加边变成一个完全图.新加的边的权值为边上两点在树上的距离.求完全图上任意两点的最大流之和. 题解: 一共有C(n,2)个点对.假设当前求s到t之间的最 ...

  2. 牛客多校第三场 G Removing Stones(分治+线段树)

    牛客多校第三场 G Removing Stones(分治+线段树) 题意: 给你n个数,问你有多少个长度不小于2的连续子序列,使得其中最大元素不大于所有元素和的一半 题解: 分治+线段树 线段树维护最 ...

  3. 2018牛客多校第六场 I.Team Rocket

    题意: 给出n个区间和m个点(点按顺序给出且强制在线).每个区间只会被第一个他包含的点摧毁.问每个点能摧毁多少个区间以及每个区间是被哪个点摧毁的. 题解: 将n个区间按照左端点排序,然后用vector ...

  4. 2018牛客多校第五场 H.subseq

    题意: 给出a数组的排列.求出字典序第k小的b数组的排列,满足1<=bi<=n,bi<bi+1,a[b[i]]<a[b[i+1]],m>0. 题解: 用树状数组倒着求出以 ...

  5. 2018牛客多校第五场 E.room

    题意: 一共有n个宿舍,每个宿舍有4个人.给出第一年的人员分布和第二年的人员分布,问至少有多少人需要移动. 题解: 对于第一年的每个宿舍,向今年的每种组合连边.流量为1,费用为(4 - 组合中已在该宿 ...

  6. 2018牛客多校第四场 J.Hash Function

    题意: 给出一个已知的哈希表.求字典序最小的插入序列,哈希表不合法则输出-1. 题解: 对于哈希表的每一个不为-1的数,假如他的位置是t,令s = a[t]%n.则这个数可以被插入当且仅当第s ~ t ...

  7. 2018牛客多校第三场 C.Shuffle Cards

    题意: 给出一段序列,每次将从第p个数开始的s个数移到最前面.求最终的序列是什么. 题解: Splay翻转模板题.存下板子. #include <bits/stdc++.h> using ...

  8. 牛客多校第四场 G Maximum Mode

    链接:https://www.nowcoder.com/acm/contest/142/G来源:牛客网 The mode of an integer sequence is the value tha ...

  9. 字符串dp——牛客多校第五场G

    比赛的时候脑瘫了没想出来..打多校以来最自闭的一场 显然从s中选择大于m个数组成的数必然比t大,所以只要dp求出从s中选择m个数大于t的方案数 官方题解是反着往前推,想了下反着推的确简单,因为高位的数 ...

随机推荐

  1. SQLServer 中发布与订阅

    在对数据库做迁移的时候,会有很多方法,用存储过程,job,也可以用开源工具kettle,那么今天这些天变接触到了一种新的方法,就是SqlServer中自带的发布与订阅. 首先说明一下数据复制的流程.如 ...

  2. mysql 多列索引的生效规则,生成1000w数据的存储过程

    https://www.cnblogs.com/codeAB/p/6387148.html

  3. 研究C语言的新型编译环境TCC

    C语言综合研究1 搭建一个tcc环境 研究过程: 问题引出:为什么要使用tcc环境,甚至连图形界面都没有,为什么要使用这样的化境? 按照我们学习的本质来讲,可能是为了体验C语言底层的相关特性,但是在研 ...

  4. vs感受,由于我的电脑装了俩年了!我直接写感受吧

    个人感受:最初的感觉,最开始装vs是因为我的电脑8.1不兼容vc6.0(一个挺坑的编程软件),最开始用vs的时候我还是一个小白什么都不懂,vs创建项目实在是太复杂,不看教程根本看不懂,也许是它能包容的 ...

  5. Week 7 迭代总结

    写在前面: 本次我为团队博客写了一篇总结,深刻总结了我们组发生的问题以及将来要做的事情.有兴趣请移步http://www.cnblogs.com/Buaa-software Week 7 Alpha轮 ...

  6. <编写有效用例>读书笔记3

    <编写有效用例>读书笔记3 第三部分主要内容是对忙于编写用例的人的提示第20章:对每个用例的提示1.每个用例都是一篇散文:这个提示提醒我们将注意力集中与文字而不是图画上,同时帮助了解将要遇 ...

  7. poj 1723 SOLDIERS 带权中位数

    题目 http://poj.org/problem?id=1723 题解 带权中位数类型的题目~ 可以先考虑降维,最后集合的y坐标,明显是y坐标的中位数的位置,容易求出y方向的贡献res_y.比较麻烦 ...

  8. Fastdfs文件服务器搭建

    安装FastDFS之前,先安装libevent工具包.然后要安装libfastcommon和FastDFS,还要依赖nginx来显示图片. 1安装libevent yum -y install lib ...

  9. Hot code replace (HCR)

    https://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F https://zhidao.baidu.com/question/195505558 ...

  10. [转帖]召冠总的 Oracle常用的性能诊断语句. --保存学习备查

    Copyfrom https://www.cnblogs.com/zhaoguan_wang --1.阻塞及等待事件信息查询-- 查询所有会话的状态.等待类型及当前正在执行的SQL脚本select t ...