传送门

 /*

 按值从大到小排序,记录下相应出现的次数并去重
枚举:从大到小枚举,如果能够通过删除其他数让当前这个数成为众数,则循环结束,输出此数,如果循环结束也没答案,输出-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. Pupet自动化管理环境部署记录

    废话不多说了,下面记录下Puppet在Centos下的部署过程: puppet是什么puppet是一种基于ruby语言开发的Lnux.Unix.windows平台的集中配置管理系统.它使用自有的pup ...

  2. PHP从入门到精通(六)

    PHP中的错误处理 1.PHP的错误级别:见表格.2.调整PHP错误报告级别:PHP中,调整错误报告级别的方式有两种: ①修改PHP.ini文件的配置项.a.会导致在当前服务器环境下所有PHP文件都受 ...

  3. Python-元组-10

    元祖 Why:对于容器型数据类型list,无论谁都可以对其增删改查,那么有一些重要的数据放在list中是不安全的,所以需要一种容器类的数据类型存放重要的数据,创建之初只能查看而不能增删改,这种数据类型 ...

  4. C++ string简单的使用技巧

    截取substr //string的操作 #include<iostream> using namespace std; int main() { string a,b; a=" ...

  5. 【个人阅读】软件工程M1/M2做一个总结

    1.以前博客链接 http://www.cnblogs.com/penglinjiang/p/4027850.html http://www.cnblogs.com/penglinjiang/p/40 ...

  6. org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unexpected failure during bean definition parsing Offending resource: class path resource [applicationC

    这个错误是 org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration proble ...

  7. 用delete和trancate删除表记录的区别

    首先说相同点,就是他们都能删除表中的数据,区别有两点: 第一点: delete语句在删除记录的时候可以有选择的删除某些数据(使用where子句),当然,如果不添加where子句,就是删除所有记录 而t ...

  8. HDU 2012 素数判定

    http://acm.hdu.edu.cn/showproblem.php?pid=2012 Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括 ...

  9. JavaScript 字符串与数组互转,并保持数据去重、排序功能

    var valueArr = new Array(); if( $("input[name='type']").val() != ""){ valueArr = ...

  10. ExtJS Tab里放Grid高度自适应问题,官方Perfect方案。

    出处:http://docs.sencha.com/extjs/4.2.1/extjs-build/examples/layout-browser/layouts/combination.js // ...