hdu5775 Bubble Sort

Unidbg逆向阿里系App签名:从环境补全到算法还原实战 在移动安全与协议分析领域,理解应用层签名机制是核心挑战之一。签名算法作为保障通信安全与身份验证的关键技术,其原理通常涉及哈希、加密及密钥协商等基础密码学概念。在Android平台,核心签名逻辑常被加固并隐藏于Native层SO库中,以对抗动态调试与静态分析,这为安全研究和协议兼容带来了技术障碍。Unidbg作为一种基于模拟执行的逆向工程工具,通过模拟ARM指令集和系统调用,允许研究者在脱离真机环境的情况下,可控地执行和调试SO文件,为解决此类问题提供了创新思路。其技术价值在于实现了对加固代码的确定性分析与算 阅读详情

Bubble Sort

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 173    Accepted Submission(s): 119


Problem Description
P is a permutation of the integers from 1 to N(index starting from 1).
Here is the code of Bubble Sort in C++.
for(int i=1;i<=N;++i)
    for(int j=N,t;j>i;—j)
        if(P[j-1] > P[j])
            t=P[j],P[j]=P[j-1],P[j-1]=t;

After the sort, the array is in increasing order. ?? wants to know the absolute values of difference of rightmost place and leftmost place for every number it reached.
 

Input
The first line of the input gives the number of test cases T; T test cases follow.
Each consists of one line with one integer N, followed by another line with a permutation of the integers from 1 to N, inclusive.

limits
T <= 20
1 <= N <= 100000
N is larger than 10000 in only one case. 
 

Output
For each test case output “Case #x: y1 y2 … yN” (without quotes), where x is the test case number (starting from 1), and yi is the difference of rightmost place and leftmost place of number i.
 

Sample Input
2 3 3 1 2 3 1 2 3
 

Sample Output
Case #1: 1 1 2 Case #2: 0 0 0
Hint
In first case, (3, 1, 2) -> (3, 1, 2) -> (1, 3, 2) -> (1, 2, 3) the leftmost place and rightmost place of 1 is 1 and 2, 2 is 2 and 3, 3 is 1 and 3 In second case, the array has already in increasing order. So the answer of every number is 0.


7
2 6 5 7 4 1 3


2 6 5 7 1 4 3
2 6 5 1 7 4 3
2 6 1 5 7 4 3
2 1 6 5 7 4 3
1 2 6 5 7 4 3
1 2 6 5 7 3 4
1 2 6 5 3 7 4
1 2 6 3 5 7 4
1 2 3 6 5 7 4
1 2 3 6 5 4 7
1 2 3 6 4 5 7
1 2 3 4 6 5 7
1 2 3 4 5 6 7


打一下一个较长序列的运行过程,发现对于一个数,可以分为两类去看:

一种是类似7这个数,它的初始位置是4,整个过程中都是要往后移动的,7的后面有三个比它小的数字4,1,3,也就是说7在冒泡的过程中,最远向右偏移3个位置;

还有一种数字是类似于4这个数字,它初始位置是5,它要最终移动到位置4,最多左移 5 - 4 = 1个位置,4这个数字右面有两个比它小的数字1,3,也就是说在移动过程中向右最远移动2位,所以数字4的移动范围是1 + 2 = 3;

剩下的就用线段树来求一个数后面有多少比它小的数字,跟求逆序数很类似


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1 | 1

const int maxn = 100005;
int sum[maxn << 2], re[maxn];
int x[maxn], index[maxn];

void PushUP(int rt) {
	sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];
}

void build(int l, int r, int rt) {
	sum[rt] = 0;
	if (l == r) return;
	int m = (l + r) >> 1;
	build(lson);
	build(rson);
}

void update(int p, int l, int r, int rt) {
	if (l == r) {
		sum[rt]++;
		return;
	}
	int m = (l + r) >> 1;
	if (p <= m) update(p, lson);
	else update(p, rson);
	PushUP(rt);
}

int query(int L, int R, int l, int r, int rt) {
	if (L <= l && r <= R) {
		return sum[rt];
	}
	int m = (l + r) >> 1;
	int ret = 0;
	if (L <= m) ret += query(L, R, lson);
	if (R > m) ret += query(L, R, rson);
	return ret;
}

int main()
{
	int T, N;
	cin >> T;
	for (int cas = 1; cas <= T; cas++) {
		scanf("%d", &N);
		build(1, N, 1);
		for (int i = 1; i <= N; i++) {
			int tmp;
			scanf("%d", &tmp);
			index[tmp] = i;
			x[i] = tmp;
		}
		for (int i = N; i >= 1; i--) {
			re[x[i]] = query(1, x[i], 1, N, 1);
			update(x[i], 1, N, 1);
		}
		printf("Case #%d:", cas);
		for (int i = 1; i <= N; i++) {
			if (index[i] <= i)
				printf(" %d", re[i]);
			else {
				printf(" %d", re[i] + abs(index[i] - i));
			}
		}
		puts("");
	}
	return 0;
}



27930-2023与27930-2015区别 描述了27930-2023与27930-2015的更新点 阅读详情

相关推荐

第六章 汇川技术InoProShop入门之modbusTCP从站协议解读

摘要:ModbusTCP从站协议是Modbus协议在TCP/IP网络上的扩展,作为服务器端被动响应主站请求。它采用MBAP+PDU帧结构,通过IP地址和502端口实现网络通信,支持标准功能码(如读/写寄存器、线圈)。相比传统串行Modbus,具有高速传输、远距离通信优势。从站需解析请求、执行操作并返回响应,同时处理错误校验和并发连接。该协议广泛应用于智能传感器、PLC等工业设备,实现高效可靠的主从数据交互。

zyfucking2010的博客 1434

HDU - 5775 - Bubble Sort( 树状数组 + 思维 )

题目链接:点击进入 题目 题意 问在给出的冒泡排序过程中,一个数到达的最右边位置与最左边位置距离差。 思路 对于一个数,位置 i ,假设右边比它小的数有 r 个,左边比它大的数有 l 个,最右边到达的位置是 i + r , 最左边到达的位置是 min ( i , i + r - l ) ; 统计数右边比它小的数的个数,左边比它大的数的个数可以用树状数组解决。 代码 // Problem: Bubble Sort // Contest: Virtual Judge - HDU // URL: https:

Cosmic_Tree的博客 253

AI智能体升级实战:从规则匹配到Function Call,准确率提升86%的技术选型之路

AI智能体升级实战:从规则匹配到Function Call的技术演进 文章记录了AI邮件助手从传统规则匹配升级到Function Call的技术迭代过程。通过案例分析,揭示了规则匹配的三大核心问题:覆盖不全(用户表达千变万化)、组合困难(多条件容易漏掉)、维护噩梦(每个需求都要新增规则)。测试数据显示,规则匹配在复杂查询中的准确率仅51%,严重影响用户体验。 技术团队对比了三种升级方案:1) 继续优化规则匹配(天花板明显);2) 微调专用NLP模型(成本高);3) 采用Function Call(灵活高效)

yweng18的博客 1077

(HDU - 5775)Bubble Sort

(HDU - 5775)Bubble Sort P is a permutation of the integers from 1 to N(index starting from 1). Here is the code of Bubble Sort in C++. for(int i=1;i<=N;++i) for(int j=N,t;j>i;—j) if(P[j-1] > P[j])

The wind of freedom blows 576

VSCode+Keil高效开发STM32:Keil Assistant插件配置全攻略

本文详细介绍了如何通过VSCode的Keil Assistant插件,将Keil MDK的编译调试能力与VSCode的现代编辑体验相结合,打造高效的STM32开发环境。文章涵盖了从环境配置、工程导入、智能提示设置到与STM32CubeMX协同工作的全流程攻略,旨在解决Keil编辑器效率低下的痛点,大幅提升嵌入式开发的编码与项目管理效率。

gold的博客 507

VCSA的vmware-updatemgr服务无法启动和vSAN界面报“certificate chain is not trusted and thumbprint doesn‘t match”处理

"Unable to update CM service info"和"Server certificate chain is not trusted and thumbprint doesn't match"问题处理

jetliu05的博客 1882

HDU-5775

题意:给出一个数列,数字不会互相重复,求每个数字在冒泡排序时所到达的最右点到最左点的距离。 思路:思考一下会现其实这题就是在问你每个数字的右边有多少个比它小的数字。可以用线段树或者树状数组来解决,遍历一遍数列,每个数字都进行一次插入和查询操作。以线段树为例: 插入:将num[i]+1~n这个区间插入到线段树中,使这个区间中的节点的值加一。 查询:对于num[i]来说,num[i]~n

Phoenix_Wright的博客 497

uniapp - [微信小程序 | 安卓苹果app] 详细实现接入天地图完整流程,提供显示地图、IP 属地定位 / 用户定位的城市名称、用户定位的经纬度超多功能(复制运行示例代码,详细注释及常见问题)

uni-app,微信小程序,安卓app,苹果app,App端,支付宝小程序,nvue,天地图,国家天地图api,接入使用天地图,uniApp小程序端接入天地图,uniapp安卓苹果app端接入天地图,微信小程序平台如何引入天地图,天地图Api使用教程,如何在uniapp里集成天地图,使用天地图获取当前定位,天地图api教程,天地图官方文档,天地图详细使用教程,Uniapp项目如何使用天地图,项目引入天地图配置及使用教程,使用天地图获取用户定位,天地图获取用户当前位置信息(经纬度),如何通过天地图拿到用户定位

🏆 前端领域优质创作者 1万+

HDU 5775 (Bubble Sort 逆序数)

题目链接 意思是告诉你一个冒泡排序,在整个排序的过程中问你每个数出现最左与最右的位置差其实就是求每个数后面有几个比他小的,因为后面小的排序会移到他前面,用树状数组写一下就可以了#include<cstdio> #include<algorithm> #include<iostream> #include<vector> #include<queue> #include<cstring> #incl

qwesde 534

《UDS/OBD诊断需求编辑工具》总目录

目录 1 基于CANdela Studio编辑CDD诊断描述文件 2 基于ODX Studio编辑ODX/PDX文件 2.1 编辑ODX-D诊断描述文件 2.2 编辑ODX-F刷写软件 该专栏主要负责介绍CANdela Studio和ODX Studio编辑CDD/ODX/PDX诊断描述文件。 1 基于CANdela Studio编辑CDD诊断描述文件 2 基于ODX Studio编辑ODX/PDX文件 【ODX介绍 】-1- 标准梳理 【ODX介绍】 -2-如何手..

「汽车电子助手」的博客 1万+

VSCode 搭建C/C++编程环境 2025新版图文安装教程(VSCode安装 + C/C++环境搭建 + 运行测试 + 背景图设置)

100%搭建成功,VSCode 搭建C++编程环境 2025新版图文安装教程(VSCode安装+C++环境搭建+运行测试+背景图设置)

Code_流苏:在代码中寻诗意,在实践中觅真知 2973

HDU5775 Bubble Sort树状数组

题目链接:HDU5775 Bubble Sort Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 653    Accepted Submission(s): 387 Problem Description

teddywang 971

手把手教你学SOC芯片架构--NoC(片上网络,Network on Chip)全方位解析

​、​。

MHD0815的博客 863

HDU 5775 Bubble Sort(冒泡排序)

HDU5775BubbleSort(冒泡排序) TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/65536K(Java/Others) ProblemDescription - 题目描述 Pisapermutationoftheintegersfrom1t...

188

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HDU 5775 Bubble Sort(树状数组)

题目链接:HDU 5775 题面: Bubble Sort Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 709    Accepted Submission(s): 418 Problem Descr

David_Jett 1309

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

HDU 5775 Bubble Sort

hdu5775Bubble Sort Problem Description P is a permutation of the integers from 1 to N(index starting from 1). Here is the code of Bubble Sort in C++. for(int i=1;i<=N;++i) for(int j=N,t;j>i;–j) ...

卖炫迈的小男孩的博客 217

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HDU5775 Bubble Sort

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5775 【题意】有1-n,n个随机排列的数,采用题目中代码进行排序,输出每个数字达到的最左边位置和最右边位置的差。 【分析】题目代码为每次将最小的数移动至最左边。如此对于一个数ai,ai右移数目为右边比ai小的数的个数。达到的最左边位置为当前位置和目标位置中小的位置,及更靠左的位置。

dDarkdawn的博客 380

hdu 5775 Bubble Sort

http://acm.hdu.edu.cn/showproblem.php?pid=5775题意:让一列数进行冒泡排序,问排序过程中,最左边到最右边的差的绝对值。 思路:我感觉,这道题的难点就是用树状数组或者是线段数去求,每个数其后比它小的个数,然后最右边的位置是初始位置加上比它小的个数减去min(初始位置和,最终位置)最小的那个我是用的树状数组 #include<bits/stdc++.h>

跟随内心的渴望 588

HDU5775Bubble Sort(树状数组)

HDU5775Bubble Sort我的: 要求:找到各个数的活动的最左端和最右端的位置的绝对值。 这个题是根据冒泡排序: ,冒泡排序每次找到一个第i最小值,放到i这个位置,然而排序的话是只有两个相邻的两个数,所以后面有多少个比该数小的数,这个数就会进行多少次和后面的交换,因为冒泡排序就是相邻的两个数才能进行交换,所以经过交换后,该数就向后移动了比他小的数的数目。 所以该数移动的最右端就是

Everything can be done! 574

hdu 5775 Bubble Sort

Problem Description P is a permutation of the integers from 1 to N(index starting from 1). Here is the code of Bubble Sort in C++. for(int i=1;i<=N;++i) for(int j=N,t;j>i;—j) if(P[j-1

zoro_n的博客 271

HDU 5775 Bubble Sort (线段树)

Bubble Sort 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5775 Description P is a permutation of the integers from 1 to N(index starting from 1). Here is the code of Bubble Sort in C++. for(in...

dituonian8372的博客 189

【HDU - 5775】【Bubble Sort】

题目:   Problem Description P is a permutation of the integers from 1 to N(index starting from 1). Here is the code of Bubble Sort in C++. for(int i=1;i&lt;=N;++i) for(int j=N,t;j&gt;i...

哇哈哈哈的博客 307

【树状数组】HDU 5775 Bubble Sort

题意: 求每个数字从一开始的数组到最后冒泡排序结束,所到达的最右边的位置与最左边的位置之差。数组的数字是从1到 n 的。 解析: 一个数字到达的最右边的位置即为当前的位置+其后面的比它小的数字的个数 一个数字到达的最左边的位置为 一开始的位置或者排完序的位置 利用树状数组求解 代码: #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using names

weixin_44745441的博客 148

【HDU】5775 Bubble Sort

Bubble Sort题目链接 Bubble Sort 题目大意    一个1~n的序列冒泡排序,求每个元素在排序中达到的最右位置和最左位置的差值。题解逆序对    注意到每个元素只有右边有元素比他小的时候才会向右移动,所以最右端的位置一定是i+k,i为当前位置,k为该元素右边的逆序对数;又因为每个元素最后的位置一定在aia_i,所以,最左端的位置一定是min(ai,i)\min (a_i,i),相

S_Black的专栏 590
上一篇: hdu5726 GCD
下一篇: CodeForces 681C Heap Operations
Daemoonn
博客等级 码龄11年 42粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值