P4447 [AHOI2018初中组]分组
时间:2021-09-05
本文章向大家介绍P4447 [AHOI2018初中组]分组,主要包括P4447 [AHOI2018初中组]分组使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这是个什么玩意
简单一想,就知道可以从左往右数
把相同的数字“摞”到一块
如果当前格比左边小的话,那么显然从小组到大组分就可以了
如果反之,更显然需要出现只有一个人的组
用优先队列实现这个东西就可以了.
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
std::priority_queue<int> q;
using namespace std;
int n;
int a[1000001];
int k=1;
int chu[1000001];
int sum=0;
int now;
int cnt;
int cntt;
int tem[10000001];
int ans=999999999;
void clear(){
while(!q.empty()){
ans=min(ans,-q.top());
q.pop();
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
}
sort(a+1,a+n+1);
int f=0;
for(int i=1;i<=n;++i){
if(a[i]==a[i+1]){
chu[k]++;
}else{
chu[k]++;
k++;
}
}
for(int i=1;i<=k;i++){
now+=chu[i];
if(a[now]!=a[now-chu[i]]+1){
clear();
}
cntt=1;
if(q.size()>=chu[i]){
for(int j=1;j<=chu[i];++j){
tem[cntt++]=(-q.top()+1);
q.pop();
}
while(!q.empty()){
ans=min(ans,-q.top());
q.pop();
}
for(int j=1;j<cntt;++j){
q.push(-tem[j]);
}
}else{
while(!q.empty()){
tem[cntt++]=(-q.top()+1);
q.pop();
}
for(int j=1;j<cntt;++j){
q.push(-tem[j]);
}
for(int j=cntt;j<=chu[i];++j){
q.push(-1);
}
}
}
clear();
cout<<ans;
return 0;
}
原文地址:https://www.cnblogs.com/For-Miku/p/15228969.html
- 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 数组属性和方法
- Linux双网卡绑定脚本的方法示例
- Serverless 有一百种玩法,比好玩更好玩
- 如何在容器服务中获取客户端真实源IP
- Linux服务器间文件实时同步的实现
- centos7 设置grub密码及单用户登录实例代码
- Linux命令行快速技巧之定位一个文件的方法
- Linux低电量自动关机的实现方法
- ubuntn备份方法总结(四种)
- linux让程序开机自动运行最简单的方法
- centos克隆linux虚拟机的完整步骤分享
- CentOS7.4下MySQL5.7.28二进制方式安装的方法步骤
- centos6.5下安装zabbix2.4的教程图解
- linux虚拟机配置静态IP地址的完整步骤
- Linux下Mysql定时任务备份数据的实现方法
- Linux系统下快速配置HugePages的完整步骤