Codeforces Round #521 (Div. 3) E. Thematic Contests (离散化,二分)

题意:有\(n\)个话题,每次都必须选取不同的话题,且话题数必须是上次的两倍,第一次的话题数可以任意,问最多能选取多少话题数.
题解:我们首先用桶来记录不同话题的数量,因为只要求话题的数量,与话题是多少无关,所以我们可以开个新数组然后离散化一下,比如\(mp[5]=6\)可以离散化成\(disc[1]=6\),\(mp[7]=2\)可以离散化成\(disc[2]=2\),这样可以方便我们进行二分查找,然后我们对\(disc\)数组sort一下,从\([1,n]\)开始进行二分,每次去找\(pos\)之后是否第一个大于等于\(now\)的位置,如果没有就break,每次二分都维护一下答案的最大值即可.
代码:
int n;
int x;
map<int,int> mp;
int disc[N];
int cnt;
int res; int main() {
//ios::sync_with_stdio(false);cin.tie(0);
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&x);
mp[x]++;
} for(auto w:mp){
disc[++cnt]=w.se;
}
sort(disc+1,disc+1+cnt);
for(int i=1;i<=n;++i){
int sum=0;
int pos=1;
int now=i;
while(true){
int tmp=lower_bound(disc+pos,disc+1+cnt,now)-disc;
if(disc[tmp]==0) break;
sum+=now;
now*=2;
pos=tmp+1;
}
res=max(res,sum);
} printf("%d\n",res); return 0;
}
Codeforces Round #521 (Div. 3) E. Thematic Contests (离散化,二分)的更多相关文章
- Codeforces Round #521 (Div. 3)  E. Thematic Contests(思维)
		
Codeforces Round #521 (Div. 3) E. Thematic Contests 题目传送门 题意: 现在有n个题目,每种题目有自己的类型要举办一次考试,考试的原则是每天只有一 ...
 - CodeForces Round #521 (Div.3)  E. Thematic Contests
		
http://codeforces.com/contest/1077/problem/E output standard output Polycarp has prepared nn competi ...
 - Codeforces Round #521 (Div. 3) D. Cutting Out 【二分+排序】
		
任意门:http://codeforces.com/contest/1077/problem/D D. Cutting Out time limit per test 3 seconds memory ...
 - Codeforces Round #365 (Div. 2)  C - Chris and Road 二分找切点
		
// Codeforces Round #365 (Div. 2) // C - Chris and Road 二分找切点 // 题意:给你一个凸边行,凸边行有个初始的速度往左走,人有最大速度,可以停 ...
 - CodeForces Round #521 (Div.3)  D. Cutting Out
		
http://codeforces.com/contest/1077/problem/D You are given an array ss consisting of nn integers. Yo ...
 - Codeforces Round #521 (Div. 3) F1. Pictures with Kittens (easy version)
		
F1. Pictures with Kittens (easy version) 题目链接:https://codeforces.com/contest/1077/problem/F1 题意: 给出n ...
 - CodeForces Round #521 (Div.3)  B. Disturbed People
		
http://codeforces.com/contest/1077/problem/B There is a house with nn flats situated on the main str ...
 - CodeForces Round #521 (Div.3) A. Frog Jumping
		
http://codeforces.com/contest/1077/problem/A A frog is currently at the point 00 on a coordinate axi ...
 - Codeforces Round #521 (Div. 3)
		
B 题过的有些牵强,浪费了很多时间,这种题一定想好思路和边界条件再打,争取一发过. D 题最开始读错题,后面最后发现可以重复感觉就没法做了,现在想来,数据量大,但是数据范围小枚举不行,二分还是可以的 ...
 
随机推荐
- java8 stream api流式编程
			
java8自带常用的函数式接口 Predicate boolean test(T t) 传入一个参数返回boolean值 Consumer void accept(T t) 传入一个参数,无返回值 F ...
 - g/test/s/lose/won/g
			
包含字符串test的任意行商,用lose代替won
 - ActiceMQ详解
			
1. MQ理解 1.1 MQ的产品种类和对比 MQ即消息中间件.MQ是一种理念,ActiveMQ是MQ的落地产品. 消息中间件产品 各类MQ对比 Kafka 编程语言:Scala 大数据领域的主流MQ ...
 - SpringBoot WebSocket技术
			
最近看了Spring in Action,了解了一下WebSocket和Stomp协议相关技术,并搭建了一个项目.网上的例子不完整或者描述不清,所以自己记录一下以作备忘. 一.配置 Spring Bo ...
 - POJ1629:picnic planning
			
题目描述 矮人虽小却喜欢乘坐巨大的轿车,轿车大到可以装下无论多少矮人.某天,N(N≤20)个矮人打算到野外聚餐.为了 集中到聚餐地点,矮人A 有以下两种选择 1)开车到矮人B家中,留下自己的轿车在矮人 ...
 - 干电池升压IC
			
1, 干电池升压IC 升压输出3V,3,3V,5V等3V-5V可调 2, 单节锂电池升压IC 升压输出4.2 ...
 - JavaScript学习总结(基础知识)
			
js代码引入 方式1: <script> alert('欢迎来到德玛西亚!') </script> 方式2:外部文件引入 src属性值为js文件路径 <script sr ...
 - Vue之事件绑定
			
Vue事件绑定 点击事件 @click="事件名" or v-on:click="事件名" 结构部分: <el-button type="pri ...
 - 解决JavaScript中构造函数浪费内存的问题!
			
解决JavaScript中构造函数浪费内存的问题! 把构造函数中的公共的方法放到构造函数的原型对象上! // 构造函数的问题! function Gouzaohanshu(name, age, gen ...
 - 向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件
			
1 import java.io.FileInputStream; 2 import java.io.IOException; 3 import java.util.Scanner; 4 5 impo ...