传送门

 /*

 按值从大到小排序,记录下相应出现的次数并去重
枚举:从大到小枚举,如果能够通过删除其他数让当前这个数成为众数,则循环结束,输出此数,如果循环结束也没答案,输出-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. MySQL两种存储引擎: MyISAM和InnoDB 简单总结

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...

  2. 把cnblogs变成简书 - cnblogs博客自定义皮肤css样式

    吐槽 博客园cnblogs作为老牌的IT技术博客类网站,为广大的开发者提供了非常不错的学习交流平台. 虽然博客内容才是重点,但是如果有赏心悦目的页面不更好吗! cnblogs可以更换博客模板,并且提供 ...

  3. Github链接及git学习心得总结

    众所周知GitHub已经是当下非常流行的代码托管库了,全世界有无数的程序员把他们的代码放在GitHub里.那比起云盘之类的工具,用GitHub有什么好处呢:1. 以后在帖子里只需要扔一个链接,大家就能 ...

  4. C++中struct 和 class的区别

    首先,C++中类的定义,从狭义上理解,就是我们使用的class类型.从广义上,类就是定义了一个新的类型和新的作用域,它具有成员函数和成员数据. 而对广义类定义的实现分为两种,一种是使用struct实现 ...

  5. QT下opencv的编译和使用

    需要的文件 qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe cmake-3.12.0-rc1-win64-x64.msi opencv-2.4. ...

  6. SSM(Spring +SpringMVC + Mybatis)框架搭建

    SSM(Spring +SpringMVC + Mybatis)框架的搭建 最近通过学习别人博客发表的SSM搭建Demo,尝试去搭建一个简单的SSMDemo---实现的功能是对用户增删改查的操作 参考 ...

  7. 『编程题全队』Beata阶段项目复审

    小组的名字和链接 优点 缺点,bug 报告(部分包括建议) 最终名次 想不出队名 1. 界面简洁大方2. 有搜索功能 1. 已经完成的活动缺了点提示界面2. 似乎界面有一点点卡顿目标实现:基本实现找到 ...

  8. JDK学习AbstractQueuedSynchronizer和AbstractQueuedLongSynchronizer

    AbstractQueuedLongSynchronizer类是扩展自AbstractQueuedSynchronizer的,实现了java.io.Serializable接口. 其中提到的wait ...

  9. activiti-explorer disable demo

    https://community.alfresco.com/thread/203012-activiti-explorer engine.properties # demo data propert ...

  10. poj 1904(强连通分量+输入输出外挂)

    题目链接:http://poj.org/problem?id=1904 题意:有n个王子,每个王子都有k个喜欢的妹子,每个王子只能和喜欢的妹子结婚,大臣给出一个匹配表,每个王子都和一个妹子结婚,但是国 ...