Jzoj3542 冒泡排序

哨兵一号数据snap预处理_利用SNAP软件进行Sentinel-1A卫星微波影像的预处理 利用SNAP软件对雷达影像进行预处理,主要包括热噪声去除、轨道文件校正、辐射定标、滤波校正、多普勒地形校正,最终获得入射角和后向散射信息。数据:本次实验所用数据为哨兵一号(Sentinel-1A)干涉宽幅模式(Interferometric Wideswath,IW)下经过多视处理和地距转换的GRD格式产品一般处理流程如下:0 SNAP软件安装软件安装:安装成功后打开SNAP后如图所示:1 数据... 阅读详情
下面是一段实现冒泡排序算法的C++代码:

for (int i=1;i<=n;i++)

 for (int j=1;j<=n-i;j++)

if (a[j]>a[j+1]) swap(a[j],a[j+1]);

其中待排序的a数组是一个1~n的排列,swap函数将交换数组中对应位置的值。

对于给定的数组a以及给定的非负整数k,使用这段代码执行了正好k次swap操作之后数组a中元素的值会是什么样的呢?

是一个模拟题也~

我们先来考虑一个数的移动情况

假设x前面有t[x]个数比x要大,那么显然在i<=t[x]的时候,x每次都会被前移一位,之后就不会再向前了

又因为,前移的次数=swap的次数,所以我们可以先求出t数组,让后二分i,使得swap的次数不超过k

设枚举出来的这个i的上界为m,那么所有t[x]>=m的数必然前移了m位,让后我们将所有t[x]<m的x拿出来排序,然后插入回原来的空格中(显然这部分的数是排序好了的,因为这些数不会再前移,所以必然有序)

最后由于没到k次,差的部分直接用模拟补上

#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,v[1000010],t[1000010],b[1000010]; long long k;
struct fenwick{
	long long w[1000010],s;
	inline void clear(){ memset(w,0,sizeof w); }
	inline void add(int x,int v=1){ for(;x<=n;x+=x&-x) w[x]+=v; }
	inline long long sum(int x){ for(s=0;x;x&=x-1) s+=w[x]; return s; }
} r,c;
int main(){
	scanf("%d%lld",&n,&k);
	for(int i=1;i<=n;++i){
		scanf("%d",v+i);
		t[i]=i-r.sum(v[i])-1; r.add(v[i]);
	}
	r.clear();
	for(int i=1;i<=n;++i) r.add(t[i]+1),c.add(t[i]+1,t[i]);
	int l=0,R=n;
	for(int m;l<R;){
		m=l+R+1>>1;
		if(k>=c.sum(m+1)+m*(n-r.sum(m+1))) l=m;
		else R=m-1;
	}
	k-=c.sum(l+1)+l*(n-r.sum(l+1));
	for(int i=1;i<=n;v[i++]=0)
		if(t[i]>=l)v[i-l]=v[i]; else b[++*b]=v[i];
	sort(b+1,b+1+*b);
	for(int i=n;i;--i) if(!v[i]) v[i]=b[(*b)--];
	for(int j=1;j<n && k;++j)
		if(v[j]>v[j+1]) swap(v[j],v[j+1]),--k;
	if(k) puts("Impossible!"); else 
		for(int j=1;j<=n;++j) printf("%d ",v[j]);
}

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go) 阅读详情

相关推荐

【校招】SHL 的 General Ability (GA, 通用能力测试)

SHL 的 General Ability (GA, 通用能力测试) 文章目录SHL 的 General Ability (GA, 通用能力测试)1、归纳推理题1.1 圈圈线条推理1.2 图形颜色位置推理1.3 箭头指向推理2. 数字推理题攻略3. 语言推理题 1、归纳推理题   归纳推理题我把它总结为三种类型:圈圈线条推理;图形颜色位置推理;箭头指向推理。 1.1 圈圈线条推理   你别看这个题目看起来很复杂,其实很简单,而且这个题型的题目背后原理都一样!我把我的 tips 偷偷分享给你们嘿嘿~先从 A

Sunnyside_ 2万+

冒泡排序算法的C/C++ 实现

冒泡排序算法: #include /* Name: 冒泡排序 Copyright: dujianjian Author: Date: 28/10/12 21:16 Description: */ void bublesort(int a[],int n){ for(int i = 1;i<n;i++) for(int j =

ITer,home聪明在于勤奋,天才在于积累 2328

麒麟系统下的多媒体革命:VLC在kylinV10上的性能优化与调试技巧

本文详细介绍了在麒麟kylinV10系统上优化VLC多媒体播放性能的实战技巧,特别针对飞腾FT-2000/4硬件平台。从源码编译调优到硬件加速配置,提供全面的性能提升方案,帮助开发者在国产操作系统上构建高效媒体播放环境。

weixin_29168675的博客 457

【JZOJ3542】 冒泡排序

【JZOJ 3542】 冒泡排序

rank的成长之路 491

22版本Altium Designer导出生产文件的规范化操作指南

本文详细介绍了PCB设计中的Gerber文件导出流程及相关文件生成方法。主要内容包括:1)Gerber文件导出的5个关键设置步骤;2)NC钻孔文件的导出方法;3)坐标文件的生成方式;4)文件打包规范要求必须包含Gerber文件、NC钻孔文件和坐标文件;5)文件提交的两种方式(新手推荐提交原始工程文件,量产推荐仅提交Gerber文件包)。文章还特别强调了单位一致性、精度验证等注意事项,为PCB设计文件的规范输出提供了完整指导。

qq_56506325的博客 1054

Python声音识别实战:从音频处理到智能分类

本文详细介绍了使用Python进行声音识别的完整实战流程。从音频预处理、特征提取(如MFCC)到构建分类模型(SVM、CNN),并最终实现一个实时环境音分类器。文章以Python为核心工具,结合librosa等库,为开发者提供了从理论到实践的清晰路径,适用于智能家居、工业监测等多种应用场景。

weixin_29064009的博客 323

bzoj 3580: 冒泡排序

Description   下面是一段实现冒泡排序算法的C++代码:   for (int i=1;i   for (int j=1;j   if (a[j]>a[j+1])   swap(a[j],a[j+1]);   其中待排序的a数组是一个1~n的排列,swap函数将交换数组中对应位置的值。   对于给定的数组a以及给定的非负整数k,使用这段代码执行了正好k次swap操

lqybzx的专栏 1207

Windows11开机必看:3种方法跳过联网激活(含最新OOBE命令)

本文详细介绍了Windows11新机开箱时绕过联网激活的三种实用方法,包括任务管理器终止进程法、命令行强制终止法和最新的OOBE\BYPASSNRO命令法。特别推荐使用微软官方预留的OOBE命令,操作简单且无副作用,帮助用户快速完成系统设置。

weixin_28366353的博客 1623

bzoj 3580 冒泡排序 乱搞+思维

冒泡排序 Time Limit:15 SecMemory Limit:256 MBSubmit:243Solved:108[Submit][Status][Discuss] Description   下面是一段实现冒泡排序算法的C++代码:   for (int i=1;i<n;i++)  for (int j=1;j<=n-i;j++)  if (a...

weixin_30622107的博客 210

LSM6DS3TR-C IMU传感器入门:从MEMS原理到姿态解算实战

惯性测量单元(IMU)是现代智能设备实现运动感知的核心部件,其基础原理基于微机电系统(MEMS)技术。MEMS加速度计通过检测质量块在惯性力作用下的位移来测量线性加速度,而陀螺仪则利用科里奥利力效应感知角速度。这种技术使得微型化、低成本的6自由度运动测量成为可能,为机器人、无人机、可穿戴设备等提供了关键的空间姿态和运动状态信息。在实际工程中,开发者需要掌握I2C/SPI通信协议、传感器数据读取与校准,并通过互补滤波等算法融合加速度计和陀螺仪数据,实现稳定的姿态解算。LSM6DS3TR-C作为一款高性价比的6

weixin_28684655的博客 595

微信小程序 “net::ERR_CONNECTION_REFUSED” 报错大揭秘与破解之道

在微信小程序开发与运行过程中,“net::ERR_CONNECTION_REFUSED” 报错是开发者常遇难题。该错误意味着小程序与服务器连接建立失败,会导致功能无法使用、数据加载异常等问题,严重影响用户体验和业务运转。本文系统剖析此错误,从网络环境不佳、服务器异常、小程序配置有误等常见触发场景入手,提供网络、服务器、配置、代码等多维度排查步骤,给出针对性解决策略,如修复网络、处理服务器故障、修正配置与代码错误,还提出开发与运维阶段的预防措施,助力开发者高效解决该报错问题。

邓邓子的博客 6131

JZOJ3542冒泡排序(二分枚举)

题面 下面是一段实现冒泡排序算法的C++代码: for (int i=1;i<=n-1;i++) for (int j=1;j<=n-i ;j++) if(a[j]>a[j+1]) swap(a[j],a[j+1]); 其中待排序的a数组是一个1~n的排列,swap函数将交换数组中对应位置的值。 对于给定的数组a以及...

DD(XYX)的硫氰化氘博客 384

VTK 显示大量点云数据及交互(点云拾取、着色、测量等)功能

VTK (Visualization Toolkit) 是一个强大的开源可视化库,非常适合处理点云数据。下面将介绍如何使用 VTK 显示大量点云数据,并实现点云拾取、着色、测量等功能。

深之JohnChen的专栏 1992

jzoj3542 【清华集训2014】冒泡排序 (又是性质+半构造)

题目对一个n元排列做冒泡排序,问做了k次交换之后排列的样子。 n<=10^6,k<=10^12analysis观察一个数会怎么移动: 假设他前面有k个比他大的数,那么前k回合他会每次往前一个位置. 然后他前面就没有比他大的了,他就会开始往后移动 (这里是别的数往前). 于是我们用数据结构找出每个数会往前多少个,然后据此找出在第x次冒泡时正好不够k次交换。 只要我们能构出当前的b数组,再做一次冒泡

一位蒟蒻的小博客 552

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

算法之冒泡排序(C++实现)

冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。 冒泡排序原理 1:比较相邻的元素。如果第一个比第二个大,

lyl771857509的博客 1034

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

冒泡排序算法详解C++程序

冒泡排序算法:(Bubble Sort)首先肯定是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 用C++实现冒泡算法

好儿郎~志在四方 9121

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jzoj5931. 【NOIP2018模拟10.27】冒泡排序

题目描述 Description 题目背景 冒泡排序的交换次数被定义为交换过程的执行次数。 题面描述 小 S 开始专注于研究⻓度为 n 的排列,他想知道,在你运气足够好的情况下(即每次冒泡排序的交换次数都是可能的最少交换次数,仿佛有上帝之手在操控),对于一个等概率随机的长度为n 的排列,进行这样的冒泡排序的期望交换次数是多少?这tm不是bogo吗 Input 从文件 inverse.in 中读入...

某司机的黑车 437

jzoj5931 冒泡排序

Description 冒泡排序的交换次数被定义为交换过程的执行次数。 小 S 开始专注于研究⻓度为 n 的排列,他想知道,在你运气足够好的情况下(即每次冒泡排序的交换次数都是可能的最少交换次数,仿佛有上帝之手在操控),对于一个等概率随机的长度为n 的排列,进行这样的冒泡排序的期望交换次数是多少? Solution ION的梗玩到现在真是 一开始看到那两个rand还以为不可做。。。可啪 由于...

olahiuj的博客 3107

冒泡排序C++实现(附完整可运行源代码)

冒泡排序(Bubble sort) 思想:从左到右两两对比,大的往后移,每轮完成之后,数组中最大的数都会沉到数组末尾。 优缺点:稳定、不需要辅助和空间,但是效率太低 复杂度: 时间换空间,不需要额外的辅助空间 平均时间复杂度:O(n平方)、最好(已经有序的情况):O(n)、最差(正好倒序的情况):O(n^2) 稳定性:稳定 源代码 /****************** 题目:冒泡排序(从小到大) 两两对比,大数沉底 *******************/ #include<iostream

qq_43685399的博客 3949

[usOJ6310]冒泡排序

题目概要:冒泡排序过程中,恰好进行k次交换后的数列。 非常有意思的题,根本想不到解法。看来,我们已经“弃之不用”的冒泡排序,其实是谜题最多的算法!至少,我,应该是没有了解其本质。 方法:树状数组预处理;大块二分、小块暴力。

七代目鸽影 563

冒泡排序实现(c++)

算法之耻——冒泡排序

m0_73125687的博客 9699

【c++】冒泡排序

原来这就是冒泡排序啊 Bubble Sort 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序” 案例 将 n (n <= 1

请你喝杯Java 3429

[js] 排序算法 (2)

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 平方阶 (O(n2))。 线性对数阶 (O(nlog2n))。 O(n1+§)),§ 是介于 0 和 1 之间的常数。 线性阶 (O(n)) 。 n:数据规模. k:“桶”的个数. In-place:占用常数内存,不占用额外内存...

aefg95955的博客 535
上一篇: Jzoj3555 树的直径
下一篇: Jzoj3486 道路改建
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值