F. Equalize the Array
Tag:#map #思维

参考:F. Equalize the Array (map、思维)



因为只是用上一次结果的次数和个数,所以不需要每个次数都遍历,即达到了节省时间,提高效率,时间复杂度由O(n^2)降到O(n)。





【供粘贴代码】

#include<iostream>
#include<map>
using namespace std;int main(){int t; scanf("%d",&t);while(t--){int n;scanf("%d",&n);map<int,int,greater<int>> map1,map2;//按从大到小排列的mapint a[n];for(int i=0;i<n;i++){scanf("%d",&a[i]);map1[a[i]]++;}for(map<int,int>::iterator it=map1.begin();it!=map1.end();it++){//first为a[i]数值   second为a[i]的次数map2[it->second]++;//x:y }int sum=map2.begin()->first*map2.begin()->second;//从最大次数开始  剩余总数就是其本身个数  x*yint res=sum;map<int,int>::iterator prei=map2.begin();//prei指针记录上一个次数以及个数 for(map<int,int>::iterator i=++map2.begin();i!=map2.end();i++){//first为次数   second为个数sum-=(prei->first - i->first)*prei->second;//前面的先减去sum+=i->first*i->second;//加上本次数的i->second += prei->second;//例:统计总的3次的个数//为原本四次的减去一次后再加上原本就3次的 prei = i;//cout<<"sum:"<<sum<<endl;if(sum > res) res=sum; }cout<<n - res<<endl; }return 0;
}

F. Equalize the Array【学习进度条2】相关推荐

  1. 学习进度条(第一周)

    学习进度条:   第一周 所花时间(包括上课) 5h 代码量(行) 150 博客量(篇) 2 了解到的知识点 这种主要是对上学期web知识的一个回顾,进行了第一次开学测验,了解了实发项目的开环情况. ...

  2. 学习进度条(第十五周)

    学习进度条(第十五周) 所用时间:15小时左右 代码量:185行 博客量:3篇 收获知识:阅读<梦断代码>体会程序员的精彩经历,学会如何项目总结. 转载于:https://www.cnbl ...

  3. 焦旭超 201771010109《面向对象程序设计课程学习进度条》

                                                                                                        ...

  4. 发布 学习进度条 博客要求

    学习进度条博客 (总分:10分) 1. 目的 通过每周补充完善进度条,记录你自己学习<软件工程>的历程.收获: 通过学习进度条来跟踪自己的学习状况. 2. 学习进度条撰写要求 标题:学习进 ...

  5. matlab 显示程序进度条,matlab学习---------------进度条waitbar

    语法: h = waitbar(x,'message') waitbar(x,'message','CreateCancelBtn','button_callback') waitbar(x,'mes ...

  6. 十一月第三周学习进度条

    学习时间:30h 代码量:500行 学习内容:web的一些知识,html5和css的一些简单界面美化还有js的入门,编写了几个简单的页面. 转载于:https://www.cnblogs.com/xi ...

  7. 201771010101 白玛次仁 《2018面向对象程序设计(Java)课程学习进度条》

    周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 第一周 20~40 1/0 1 九九乘法表 第二周 40~50 2/0 2 实验一, ...

  8. 《2018面向对象程序设计(java)课程学习进度条》

     学习收获最大的程序阅读或编程任务    课堂/课余学习时间(小时)    发布博客/评论他人博客数量   (阅读/编写)代码行数        周次                  九九乘法表   ...

  9. 《面向对象程序设计课程学习进度条》

    周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 第一周 100/40 1/0 4 实验4.6 第二周 200/50 1/0 4 实验 ...

最新文章

  1. winform分页案例简单实现方式~
  2. 技术前沿资讯-Apache Flink 1.14 新特性介绍
  3. Mysql闪回工具之binlog2sql的原理及其使用
  4. linux命令行大全 笔记,《Linux命令行大全》读书笔记
  5. macos支持exfat吗_在Windows上使用VMware Workstation虚拟机安装macOS
  6. vue 地图使用navigator_weex踩坑之旅第五弹 ~ 使用navigator内置模块实现导航
  7. mysql查看防火墙状态命令,centos 7中firewall防火墙的常用命令总结
  8. .NET 4.0 使用 asyn await
  9. python 爬取热搜网教程 (上)
  10. 第二章 Maxwell 安装部署
  11. 微信卡券开发HelloWord
  12. 如何使静态图片做成动态效果?怎么让静态图片动起来
  13. 在linux运行php文件
  14. 对DSP的基本了解(二)--DSP的软硬件环境
  15. 第九周项目四----广义表算法库及应用1
  16. 淘宝SEO优化提高流量的绝密办法
  17. 兼容QQ浏览器,UC浏览器滚动到底部
  18. Unity(游戏)中五种数据存储的方法
  19. Internet Download Manager浏览器插件安装方法
  20. k8s部署kong+konga+pgs

热门文章

  1. 斑马打印机(zebraZT410R-203dpi)打印RFID标签流程
  2. 使用torchvision时报错:ModuleNotFoundError: No module named ‘six‘
  3. OLED显示字符的大小与PCtoLCD2002生成字模
  4. logcat查询日志
  5. 如何使用VLOOKUP在Google表格中查找数据
  6. 梦想照进现实|CSDN 实体奖牌 第二期
  7. 如何修改Windows10系统文本背景色
  8. windows DNS缓存查看与清理
  9. 一文掌握Tableau制作透视表/数据表
  10. Domino版本、维护版本和补丁程序概念