F - Distinct Numbers
时间:2019-10-22
本文章向大家介绍F - Distinct Numbers,主要包括F - Distinct Numbers使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
链接:https://atcoder.jp/contests/abc143/tasks/abc143_f
题解:开两个数组,其中一个arr用来保存每个元素出现的次数,同时再开一个数组crr用来保存出现次数等于其下标的个数,然后对crr求前缀和,crr就变成了出现次数维护小于其小标的总个数。
根据题意:每次取k个,k个元素各不相同,问最多可以取多少次,假设可以取 x次,为了保证每个元素不相同,那么每个元素出现的次数最多为x次,并且总个数为k*x,因此这里可以用二分来判断。
AC代码:
//crr[i]指的是当前每个元素出现的次数小于i的总个数. //取k个,一共取mid次,所以要求就是当前区间总个数应该大于等于mid*k。 //由于区间crr维护的是当前出现次数小于下标的元素个数,所以每次取都不会取得相同的元素。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll N=3E5+7; ll arr[N]; ll crr[N]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ ll x; cin>>x; arr[x]++; crr[arr[x]]++;//这样可以让crr维护出现次数大于等于其下标的元素的个数。秒。。 } for(int i=1;i<=n;i++) crr[i]+=crr[i-1]; for(int k=1;k<=n;k++){ ll ans=0; ll left=0,right=n; while(left<=right){ ll mid=(left+right)/2; if(k*mid<=crr[mid]){ left=mid+1; ans=max(ans,mid); } else{ right=mid-1; } } cout<<ans<<endl; } return 0; }
原文地址:https://www.cnblogs.com/Accepting/p/11719466.html
- Attribute(特性),怎么用才更好?
- 如何使用Airgeddon搭建基于软件的WIFI干扰器
- 还在写SQL的同志,去喝杯咖啡吧!
- 使用XSD编写具有智能提示的XML文件(以SQL-MAP脚本为实例)
- 一个利用CVE-2017-11292的APT样本技术分析(一)
- Attribute(特性),怎么用才更好? —— 字段编号被误解了
- PDF.NET的SQL日志 ASP.net 路径问题 详解
- 【自然框架】稳定版beta1——源码下载,Demo说明
- TOP语句放到表值函数外,效率异常低下的原因分析
- 常见.NET功能代码汇总 (3) 33,彻底关闭Excel进程
- Vue.js 入门指南之“前传”(含sublime text 3 配置) 1,下载安装Node.js2,配置Vue环境3,Vue初探4,配置sublime Text
- JavaScript的“原型甘露”
- JSP开发过程遇到的中文乱码问题及解决方法
- 求连续操作(登录)数量(次数)最大的记录(用户)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法