1077E Thematic Contests 【二分答案】
题目:戳这里
题意:n个数代表n个problem,每个数的值代表这个问题的topic,让我们挑出一些problems,满足挑出problems的topic是首项为a1公比为2的等比数列(每种topic只能选一次。问最多能挑出多少个problems。
解题思路:可以看出这道题只和每个topic的数量有关,我们记录每个topic的数量并排序。n的范围是2e5,也就是最后选出来的topic最多21个。所以只需要枚举等比数列的a1,二分查找是否有满足条件的a1*2^x即可。注意每种topic只能选一次,所以每次找出一个topic,二分的范围就要缩小一下,具体看代码。
1 #include <bits/stdc++.h> 2 typedef long long ll; 3 const int maxn = 1e6+10; 4 const ll inf = 1e18; 5 using namespace std; 6 ll a[maxn]; 7 map<ll, int>mp; 8 int cnt[maxn]; 9 int main(){ 10 int n; 11 scanf("%d", &n); 12 for(int i = 1; i <= n; ++i) { 13 scanf("%lld", a+i); 14 ++mp[a[i]]; 15 } 16 int newn = 0, maxx = 0; 17 for(auto i: mp) { 18 cnt[++newn] = i.second; 19 maxx = max(maxx, i.second); 20 } 21 sort(cnt + 1, cnt + 1 + newn); 22 int ans = 0; 23 for(int i = 1; i <= maxx; ++i) {//21 24 int pos = 1, mul = 1; 25 int sum = 0; 26 while(pos <= newn) { 27 pos = lower_bound(cnt + pos, cnt + 1 + newn,mul * i) - cnt; 28 // printf("%d pos, %d mul %d sum\n", pos, mul,sum); 29 if(pos > newn) break; 30 else { 31 sum += mul * i; 32 ++pos; 33 } 34 mul *= 2; 35 } 36 ans = max(ans, sum); 37 } 38 printf("%d\n", ans); 39 return 0; 40 }
View Code
转载于:https://www.cnblogs.com/zmin/p/9977848.html
1077E Thematic Contests 【二分答案】相关推荐
- UVA1396 Most Distant Point from the Sea(AM - ICPC - Tokyo - 2007)(计算几何,半平面交 + 二分答案)
整理的算法模板合集: ACM模板 题目传送门 见<训练指南>P279 很明显就是一个二分答案,它问的是最远的点,直接枚举因为这里都是double类型的数所以有无限个点,我们可以直接二分. ...
- UVA1146 / LA3211(ACM-ICPC 2004 Europe - Southwestern) Now or later(2-SAT问题 + 二分答案)
题目要求为 最大化最小值,很明显就是二分答案. 题目中每个飞机 要么是一种状态(早),要么是另一种状态(晚),考虑 2-SAT. 我们二分答案,二分着陆时间间隔的最小值 x. 枚举每两个飞机 p , ...
- 解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案)
根据题意,我们要环上各点权值之和除以各边权值之和最大. 求最大答案,很明显可以使用二分答案.那么我们假设当前答案为 x,如果有更大的答案,那么方程就可以按下图转换: 也就是说如果有更大的答案,则有一个 ...
- P2759 奇怪的函数(二分答案,数学运算)
P2759 奇怪的函数 范围2e92e92e9,直接枚举肯定超时,正着直接求答案求不出来,那么运用逆向思维,直接二分答案判断即可.这道题涉及简单的数学运算. 要xx>=nx^x>=nxx& ...
- P3743 kotori的设备(二分答案,思维,线性)难度⭐⭐⭐
题目链接 题目背景 kotori 有 n 个可同时使用的设备. 题目描述 第 i 个设备每秒消耗ai个单位能量.能量的使用是连续的,也就是说能量不是某时刻突然消耗的,而是匀速消耗.也就是说,对于任意实 ...
- 【基础算法】二分法(二分答案,二分查找),三分法,Dinkelbach算法,算法详解+例题剖析
目录 一 . 二分法 二分搜索得要求: 二分查找步骤: 二分答案: 玄学的二分(二分答案) 二 . 三分法 例题 三.01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) 一 . 二 ...
- 洛谷P1182 数列分段Section II 二分答案
洛谷P1182 数列分段Section II 二分答案 题意:将 n 个 数 分为 m段 求一种方案,使这m段中最大的和 最小 额..可能有点拗口,其实就是说每一种方案,都有对应的 每段和的最大值, ...
- 【枚举】【二分答案】【分块答案】【BFS】【最大流】【Dinic】bzoj1189 [HNOI2007]紧急疏散evacuate...
[法一]枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意di ...
- [Bzoj2282]消防(二分答案+树的直径)
Description 某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超越宇宙的热情,所以这个国家 ...
- hihoCoder 第136周 优化延迟(二分答案+手写堆)
题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...
最新文章
- 为什么要采购订单而不采购库存?
- Java多线程之线程池配置合理线程数
- python 遍历文件夹写入excel_python:创建文件夹:写入文本1:读取txt:读取Excel文件遍历文件夹:...
- jquery 过滤html代码,jquery – 如何使指令使用过滤的HTML属性?
- SpringBoot:使用JdbcTemplate
- iTOP-4418开发板支持动态调频,AXP228电源管理,预留锂电池接口,内置充放电电路及电量计...
- 十二、十三天总结笔记
- 明天发布的iPhone 11,只剩下价格是悬念了?
- Mac上Jupyter notebook代码补全
- pgpool-II 手册
- bootloader系列二——arm920t--bootloader架构设计
- 荣耀9igoogle模式_初学者:如何从iGoogle切换回纯Google主页
- 企业部署信息安全等级保护的重要性
- 【golang】aws s3 go sdk
- c语言8bit转10bit,10bit视频转码成8bit视频教程(非常简单)
- 修改北京定点医院amp;查询医保信息
- Android studio编程常用控件
- 电脑开机内存占用过高处理
- 题目---小Q定义了一种数列称为翻转数列: 给定整数n和m, 满足n能被2m整除。对于一串连续递增整数数列1, 2, 3, 4..., 每隔m个符号翻转一次, 最初符号为'-';。
- github官网老是打不开
热门文章
- python3安装库报错ERROR: Exception: Traceback (most recent call last): File “A:\ProgramData\Anacon
- PAT甲级_1116(Come on)
- 销售型呼叫中心系统特点
- 关于locahost:8080一直在等待却不报错
- iMovie 6 IDVD : The Missing Manual
- php的表达爱意的一句代码,表达爱意的诗句(精选50句)
- 借助Net-Speeder对服务器进行优化
- 显示前半内容后半内容用省略号_省略号前后的标点用法
- golang php mysql性能_golang vs dlang vs nodejs vs php 性能对比较量
- 专家建议将“元宇宙”更名为“元网络”或“灵境网络” 回归本质 规范发展