GYM 105125 C

news/2024/9/20 12:04:42/文章来源:https://www.cnblogs.com/yaosicheng124/p/18417586

题目描述

给定 \(NM\) 个数 \(A_1,A_2,\dots,A_{NM}\),你要将这些数分成 \(N\) 个数组,每个数组 \(M\) 个数。接着你要将这些数组按字典序排序。

对于排序后每个数组求出可能的字典序最小情况。

思路

我们从字典序的比较上来考虑,并把 \(A\) 排序。

首先考虑当前数组 \(i\) 的第一位。在 \(i\) 之前,还有 \(i-1\) 个数组的字典序需要小于它,因此第一个数一定为 \(A_i\)

接着考虑第 \(2\) 位,如果某个数组第一位就小于 \(i\) 了,那么后面的部分就不用管了。假设有 \(x\) 个数组第一位与 \(i\) 相同,也就是在 \([1,i]\) 中有 \(x\) 个数 \(=A_i\),那么就有 \(x-1\) 个数组目前还 \(=\) 数组 \(i\),那么 \([i+1,i+x-1]\) 都要分配给它们,所以第二位为 \(A_{i+x}\)

后面的部分同理。

空间复杂度 \(O(NM)\),时间复杂度 \(O(NM\log (NM))\)

代码

#include<bits/stdc++.h>
using namespace std;const int MAXN = 1000001;int n, m, a[MAXN];
vector<int> ve[MAXN];int query(int l, int r, int x) {int L = lower_bound(ve[x].begin(), ve[x].end(), l) - ve[x].begin();int R = upper_bound(ve[x].begin(), ve[x].end(), r) - ve[x].begin() - 1;return R - L + 1;
}int main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);cin >> n >> m;for(int i = 1; i <= n * m; ++i) {cin >> a[i];}sort(a + 1, a + n * m + 1);for(int i = 1; i <= n * m; ++i) {ve[a[i]].push_back(i);}for(int i = 1; i <= n; ++i) {int cnt = i, pos = i;for(int j = 1; j <= m; ++j) {cout << a[pos] << " \n"[j == m];cnt = min(cnt, query(pos - cnt + 1, pos, a[pos]));pos += cnt;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/798792.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

能否判断自定义变量是否为空?

不同的编程语言有不同的方式来判断一个变量是否为空。下面列出了一些常见编程语言中判断变量是否为空的方法: 1. Java 在Java中,你可以使用多种方法来判断一个变量是否为空:对于对象:检查是否为 null。javaif (object == null) {System.out.println("变量为空");…

孙若涛第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc/这个作业的目标 介绍自己姓名 学号 孙若涛 2022329301090自我介绍 大家好,我是22电气二班的孙若涛,来自浙江慈溪。 兴趣爱好以及生活经历 我喜欢阅读和旅行,还有游戏。在暑假,我去了日本,度过了一段难忘的…

数字图像处理-实验2

实验E2:图像代数运算 实验2.1:对比度调整设计一个Sigmoid函数,实现对图像的对比度调整,并使得调整幅度可以通过参数控制;通过查阅资料得知,Sigmoid函数的标准形式为:其中,x 表示输入的像素值,并且可以归一化到[0,1]范围内。 k 表示的是控制对比度调整幅度的参数,k 值…

如何修改URL命名规则 让他更适合Google SEO优化

为了使URL更符合Google的SEO优化标准,您可以遵循以下原则来修改您的URL命名规则:简洁明了:URL应该尽可能短小,避免冗长的路径。 使用有意义的单词而不是数字或不相关的短语。使用关键词:在URL中包含目标关键词可以帮助搜索引擎理解页面的内容。 但是避免过度堆砌关键词,这…

General error: 1366 Incorrect string value: \xF0\x9F\x98 for column content

错误信息 General error: 1366 Incorrect string value: \xF0\x9F\x98 for column content 表明插入的数据包含不正确的字符或编码问题。具体原因可能是:字符集不匹配:数据库表的字符集与应用中使用的字符集不一致。 字段类型不支持某些字符:VARCHAR 或 TEXT 类型字段可能不…

智能行为分析摄像头

智能行为分析摄像头主要采用了计算机视觉深度学习算法,利用现场已有的监控摄像头对现场监控画面当中的人员行为进行实时分析识别预警。智能行为分析摄像头可以实时分析个人行为,如:跌倒监测、抽烟识别、睡岗离岗识别、打电话识别、区域入侵识别、攀高识别、玩手机识别等。智…

工地视频监控行为分析

工地视频监控行为分析对监控范围人员行为如高空作业安全带穿戴识别、安全帽佩戴识别、反光衣识别、工装着装识别等。当工地视频监控行为分析检测出人员未按要求在作业时穿戴安全带、安全帽、反光衣、工装时,系统连接当场语音广播提醒并抓拍传给后台监控留档保存。工地视频监控…

工地AI视频行为分析系统

工地AI视频行为分析系统通过现场安装的监控摄像头对现场视频监控画面当中人员行为进行实时分析预警,工地AI视频行为分析系统在可以监测分析:安全帽佩戴识别、反光衣穿戴识别、抽烟识别、打电话识别、睡岗离岗识别、安全带佩戴识别、区域入侵识别、玩手机识别等,当系统检测到…

工地视频监控人员行为分析系统

工地视频监控人员行为分析系统利用现场已有的监控监控摄像头实时分析现场视频画面,视频监控人员行为分析系统对监控区域内的人员行为识别如:打电话、睡岗、跌倒、离岗、玩手机、异常徘徊、抽烟等行为进行识别,工地视频监控人员行为分析系统可进行现场物体状态检测:区域入侵…

人员行为智能分析系统

人员行为智能分析系统主要包含行为分析和特征识别。人员行为智能分析系统以机器学习+边缘计算视觉分析为依托,对人员徘徊、人员集聚、物件遗留、打架斗殴、跌倒检测、安全帽佩戴识别、反光衣识别、区域人数统计、火焰检测等多个方面。人员行为智能分析系统根据AI神经元网络视觉…

SQLSTATE[HY000]: General error: 1366 Incorrect string value: \xF0\x9F... for column content at row 1

错误信息 SQLSTATE[HY000]: General error: 1366 Incorrect string value: \xF0\x9F... for column content at row 1 表明插入的数据包含不正确的字符或编码问题。具体原因可能包括:字符集不匹配:数据库表的字符集与应用中使用的字符集不一致。 字段类型不支持某些字符:VAR…

高空作业安全绳穿戴识别系统

高空作业安全绳穿戴识别系统利用作业现场已有的摄像头,通过计算机视觉+视频ai分析技术,对高空作业人员进行实时监测。当高空作业安全绳穿戴识别系统检测出相关人员在高空作业未佩戴安全绳时,系统立即预警提醒,并把报警记录储存在服务器数据库中,同步将信息发到相关人员手机…