• 题意:有\(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;
    }

最新文章

  1. [LeetCode] Reverse Integer 翻转整数
  2. flex Vector
  3. 【知识积累】BufferedImage类实现图片的切分
  4. robotframework笔记14
  5. Play Framework介绍:主要概念(转)
  6. bzoj1588,1208,1503
  7. bzoj1150: [CTSC2007]数据备份Backup
  8. [上传下载] C#修改DownLoadHelper上传下载帮助类 (转载)
  9. 常用财务软件:用友,金蝶,新中大,速达,管家婆,金算盘,远方,远光,金钥匙,润衡,浪潮,上海博科,易商,任我行,千方百剂,智管,小蜜蜂,SAP,ORACLE,SSA,QAD,MAPICS,JDE。
  10. validators配置要点及No result defined for action报错解决方案
  11. Java面试经
  12. Python---老王开枪
  13. tomcat7性能调优与配置(以windows版为例)
  14. js 实现异步上传图片+预览
  15. MHA官方文档翻译
  16. 洛谷 p1434 滑雪【记忆化搜索】
  17. python2x 与 python3x 区别
  18. IDEA_debug窗口问题,debugger窗口消失,窗口漂浮等
  19. S3C2440的七种模式之——未定义模式(去掉bl print1 bug解决)
  20. C++的函数重载和main函数之外的工作

热门文章

  1. Linux Clone函数
  2. Error: Could not open input file: /usr/java/jdk1.7.0_07/jre/lib/jsse.pack
  3. 【Oracle】表空间配额问题
  4. 【小菜学网络】交换机与MAC地址学习
  5. sap alv grid 中的delete按键问题
  6. PAT练习num4-D进制的A+B
  7. 浅谈前端常用脚手架cli工具及案例
  8. 一文说通Dotnet的委托
  9. vue3.0改变概况
  10. ES入门及安装软件