GDUT_排位赛题解报告_第5场_A. 唯一排列

归并排序-刷题2021-07-16 归并排序 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。 输出格式 输出共一行,包含 n 个整数,表示排好序的数列。 数据范围 1≤n≤100000 输入样例: 5 3 1 2 4 5 输出样例: 1 2 3 4 5 代码思路 This algorithm is a typical application of 阅读详情

题目

ChenJr给你一个长度为n的排列p,你可以交换其中任意相邻的两个数。现在你需要用最小的交换次数使得这个排列变成升序的序列。现在ChenJr想知道,对于这个排列p,是否存在唯一的交换方式,使得这个排列变成升序的序列。

Input
第一行包含一个正整数T (1≤T≤5∗104),代表有T组样例。

对于每组样例,第一行包含一个n (1≤∑n≤105),代表排列的大小。

下一行包含n个正整数pi,代表排列的值。

Output
对于每组样例,输出一行’Y’或者’N’。

如果交换方式唯一,则输出’Y’,否则输出’N’。

Example
inputCopy
3
1
1
3
3 2 1
4
3 1 2 4
outputCopy
Y
N
Y
这个题意很清楚,我就不多说,就是问决策唯一性。

我们来看一下:当且仅当两个相邻数左大右小才可以交换。把这样的两个数称为可操作的数对。
这样的话,我们就可以想如果初始序列有大于一个这样的可操作的数对那么答案就是N,因为第一步就可以有多个操作。
换句话说:需要始终只有一个或者0个这样的可操作数对,保持到0,才算是Y,否则都是N。
那么假如有这样的数:…ai , aj , ak , al…;
这个序列只有aj , ak是可操作的数对,那操作之后我们不需要再用O(n)做法去扫整个序列就可以直接去判定,ai , ak, aj, al这3个相邻的对子有几个可操作的数对就行了。
于是完整代码已经很简单了:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <climits>
#include <queue>
#include <stack>
#include <map>
//鬼畜头文件
using namespace std;
const int INF = 0x3f3f3f3f;
//1.06e9大小
const int mod = 1e9+7;
typedef unsigned long long ULL;
typedef long long LL;
//鬼畜define
int t;
int n;
int all[100010];
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		int num=0;
		int location;
		for(int time=0;time<n;time++)
		{
			scanf("%d",&all[time]);
		}
		for(int time=0;time<n-1;time++)
		{
			if(all[time]>all[time+1])
			{
				++num;
				location=time;
			}
		}
		if(num>1)printf("N\n");
		else if(num==0)printf("Y\n");
		else
		{
			while(1)
			{
				if(location==n-2){printf("Y\n");break;}
				int temp=all[location];
				all[location]=all[location+1];
				all[location+1]=temp;
 
				if(all[location-1]>all[location]&&all[location+1]>all[location+2]){printf("N\n");break;}
				else if(all[location-1]<=all[location]&&all[location+1]<=all[location+2]){printf("Y\n");break;}
				else
				{
					if(all[location-1]>all[location])--location;
					else ++location;
				}
			}
		}
	}
 
 
    return 0;
}

【算法】求最小代价使得所有数的乘积等于给定的数(网易校招) 最小代价使得所有数的乘积等于给定的数 阅读详情

相关推荐

【实战指南】WinPE环境下360系统急救箱的病毒查杀全流程解析

本文详细解析了在WinPE环境下使用360系统急救箱进行病毒查杀的全流程。从制作WinPE启动盘到进入PE环境,再到360急救箱的深度使用和系统修复,提供了实用技巧和常见问题解决方案,帮助用户高效清除顽固病毒。

weixin_28568819的博客 535

计蒜客习题:排序

问题描述 你需要分析排序算法,将 n 个互不相同的整数,通过交换两个相邻的元素使得数列有序的 最少交换次数。 比如,原数列为: 9,1,0,5,4 排序后的数列为: 0,1,4,5,9 输入格式 第一行一个整数 n(n≤500000)。 接下来 n 行,每行一个整数 ai(ai≤10^9)。 输出格式 输出一个整数,表示操作次数。 样例输入 5 9 1 0 5 4 样例输...

LiuKairui的博客 1414

记录Nvidia AGX Orin的配置日常(二)设置上电自动开机和远程桌面

因为要拿AGX作为机器人的主控板,所以需要给他设置一下通电后无需按电源键就自动开机,然后再配置一下远程桌面。

AutomaticForever的博客 1361

LeetCode高频题:最少经过几次操作可以使数组变为非降序状态

1)本题难就难在怎么想解法,你要将其变为非递减状态,原来那个数组排序后位置动过的最长递增那个子数组,是不需要动的,它的长度就是不动的长度 2)N-这个最长严格递增子序列长度就是我们要动的其他位置,难想但是见过,下次就明白了 3)另外,我们不求这个题,单独求最长递增子序列长度怎么求,那个题很经典,也很困难,要学学 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。...

weixin_46838716的博客 5189

在ubuntu上安装FastSufer【本机安装】

其实说是安装,只需要将文件下载并解压即可。推荐教程注意版本:在下面这个网址根据你的操作系统找到最新的版本安装。比如我的操作系统为Ubuntu 20.04.5,因此我安装ubuntu20-7.4.1的freesurfer打开~/.bashrc在~/.bashrc文件中添加以下三行关闭~/.bashrc更新~/.bashrc安装tcsh注意每次进入终端使用freesurfer时需要输入FREESURFER_HOME路径根据freesurfer的文件夹所在位置自己修改。

Xingwen_future的博客 2008

【车载以太网】【架构】整体架构与协议标准

车载以太网架构图 应用层:DHCP /SOMEIP/DoIP/XCP/UDPNM 传输层:TCP/IP 网络层:IPv4/IPv6/ARP/ICMP 链路层:IEEE Ethernet MAC+VLAN 物理层:Ethernet PHY: 100BASE-T1/1000BASE-T1/100BASE-Tx

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 8354

重庆NKOJ2180-交换排序

给出一个长度为n的整数数列,你每一次可以随意交换其中任意相邻两个数字的位置。接下来n行,第i行表示数列中的第i个整数a[i](0 ≤ a[i] ≤ 999,999,999)第一行,一个整数 n(n < 500,000)表示待排序的数列长度。注意,结果可能超过int的范围,建议用long long 类型。在马桶上磨叽了半个小时,发现冒泡排序行不通,只有用并归排序。long long的定义方式为:long long x;对于每组输入数据,输出一个整数,表示最少交换的次数。有关排序的算法可以参考我的。

ny_Dacong的博客 517

从零开始学Agent的搭建——多角色项目需求分析框架实战

场景一:电商促销需求——技术细节顾此失彼团队用单Agent分析一个"双11秒杀系统"的需求。Agent输出了完整的功能清单,但当我们拿着这份方案找架构师评审时,发现了致命问题:Agent完全没有考虑库存扣减的并发一致性、Redis与MySQL之间的数据同步延迟、以及超卖风险的控制策略。原因是单Agent在处理"业务理解"任务时,已经耗尽了它的"注意力预算",技术深度分析几乎为空。场景二:ERP集成需求——跨系统边界模糊。

软件行业技术文化交流。 534

hdu 5256 序列变换 求最少改变次数使序列变为递增 最长不下降子序列

题意:我们有一个数列A1,A2…An,你现在要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。 请输出最少需要修改多少个元素。对于任意两个数A[i]A[i],A[j]A[j](i>ji>j) 如果满足A[i]−A[j]≥i−jA[i]-A[j] \geq i-j可以使得[i,j][i,j]区间内的数都是可修改为递增的,可以将上面那个式子转换为A[i]−

inf_force 4587

37、深入解析SCTP与RTP传输协议

本文深入解析了SCTP与RTP两种重要传输协议。SCTP提供可靠的多流数据传输,支持关联管理、选择性确认和错误处理,适用于高可靠性场景;RTP则专注于实时音视频数据的低延迟传输,配合RTCP实现质量监控。文章详细介绍了两种协议的数据结构、工作流程及应用场景,并对比其特性,帮助开发者根据可靠性、实时性和多流需求选择合适的协议。

time3的博客 83

【超详细】MIT 液态神经网络(LNNs)——深度学习新动向

输入可以是任何形式的时间序列数据,其中表示时间。例如传感器读数、金融市场数据、语音信号等。

allein_STR的博客 2611

蓝桥杯 Python 练习题 数字游戏

试题 算法训练 数字游戏 提交此题评测记录 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   给定一个1~N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列都比上一次的序列长度少1,最终只剩一个数字。   例如:   3 1 2 4   4 3 6   7 9   16   现在如果知道N和最后得到的数字sum,请求出最初序列a[i],为1~N的一个排列。若有多种答案,则输出字典序最小的那一个。数据保证有解。 输入格...

qq_57844679的博客 5914

2024年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

他尝试编写了如下程序,请你完善划线处的代码,计算出在h点s分放学时,三个时针分别经过3点位置的次数,用一个元组表示各指针经过3点位置的次数 (时针次数,分针次数,秒针次数) ,并输出。所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。匿名函数,冒号之前表示的是这个函数的参数,冒号之后表示返回值,可以使用默认值,使用时需要将它赋值给一个变量,设置默认值不是必须,如无传入实参则使用默认值,如有传入实参则使用实参。

人生就是一个不断学习的过程 370

GDUT_排位赛题解报告_第5场_H. 完美排列

题目: ChenJr定义一个长度为n的完美排列为:对于一个任意的的i,都有a[i−1]>a[i]<a[i+1] 或者 a[i−1]<a[i]>a[i+1] 给你一个正整数n,你需要输出一个字典序最小的完美排列。 Input 一行输入一个正整数n (1≤n≤105)。 Output 输出n个整数,代表答案的排列。 Example inputCopy 1 outputCopy ...

DevourPower的博客 461

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

GDUT_排位赛题解报告_第3场_H. Photoshoot

题目: Farmer John is lining up his N cows (2≤N≤103), numbered 1…N, for a photoshoot. FJ initially planned for the i-th cow from the left to be the cow numbered ai, and wrote down the permutation a1,a2,…...

DevourPower的博客 525

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

华为机试题(求最少交换次数)——JAVA

用数组0,1的翻转来代替交换。将小于k的值变为1,大于等于k的值变为0。给出数字K,请输出所有结果小于K的整数组合到一起的最少交换次数组合一起是指满足条件的数字相邻,不要求相邻后在数组中的位置。小于2的表达式是1 1 0,共三种可能将所有符合要求数字组合一起,最少交换1次。将问题转变为求一个长度等于数组中1的个数的滑窗,这个滑窗中0的个数最少。-100

XiaoBaibai0o的博客 1304

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

使序列有序的最少交换次数-任意交换元素位置

好

lfbcsdn博客 1万+

排序 交换排序

归并排序

2301_76869282的博客 338

问题 C: 序列交换

问题 C: 序列交换 时间限制:1 Sec内存限制:128 MB提交:914解决:48[提交] [状态] [命题人:jsu_admin] 题目描述 给一个1到n的排列,每次可以交换相邻两个数,问使用最少操作次数使得序列递增的方案是否唯一。 输入 多组输入,每组一个数n(1&lt...

airen6935的博客 545

poj 2299

题意:给出一个长度为n的数列,你每一次可以随意交换其中两个数字的位置。问你至少交换几次,才能使得这个数列是个单调递增数列。 思路:逆序数。归并排序求逆序数:  归并排序主要是二路归并排序,采用分治的思想:对于某个数组a[n]排序,先将前半部分排序,再将后半部分排序,最后归并两部分。归并排序是一种稳定的排序方式,且时间复杂度为O(n*log2n)。归并排序还可以求一串数中的逆序数。在归并相邻...

一颗平常心 677

What Goes Up Must Come Down(树状数组求逆序对)

题意 给你一个长度为n的数字序列,你每次可以交换任意两个相邻的数字,让你求出达到目标序列(前面不递减,后面不递增) 思路

Cosmic_Tree的博客 644

现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。

现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。 一、 c/c++实现 #include using namespace std; // #include class Solution { public: int MinChange(vector

taotaoahui 6339

[编程题] 序列交换

牛牛有一个长度为n的整数序列s,羊羊要在牛牛的序列中选择不同的两个位置,然后交换这两个位置上的元素。现在需要求出羊羊交换后可以得到的不同的序列个数。(注意被交换的两元素值可能相同)。 如序列{1, 47},输出1.羊羊必须交换仅有的两个元素,得到序列{47, 1}。羊羊必须交换,不能保留原有的序列。 {1, 2, 1},输出3.羊羊通过交换可以得到{2, 1, 1},{1, 1, 2},{1, 2, 1}这三个序列。

W_X_C的博客 2109

c++数组换位

问题:大小交换 给定一个长度为N的数列,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。(保证最大和最小值都是唯一的。) 输入描述: 输入在第一行中给出一个正整数N(≤1000),第二行给出N个整数,数字间以空格分隔。 输出描述: 在一行中顺序输出交换后的序列,每个整数后跟一个空格。 示例 1: 输入: 5 8 2 5 1 4 输出: 1 2 5 4 8 https://ask.csdn.net/questions/7697785?answer=

weixin_51948279的博客 3073

c 语言 最值交换

/***** 题目描述 有一个长度为n的整数序列。请写一个程序,先把序列中的最小值与第一个数交换,再把最大值与最后一个数交换。输出转换好的序列。 分别编写两个函数MinIndex()和MaxIndex()来计算最小值下标和最大值下标。 intMinIndex(int a[], int n); //函数返回数组a中最小元素的下标 intMaxIndex(int a[], int n); //函数...

qq_39345244的博客 1976

牛客练习赛87

A. 中位数 题目: 给出长度为n的数组a1,a2,…,an,做确切地k次操作,每次操作选择两个不同的正整数i,j使得ai=ai+aj​,并将aj​从数组中删除。 k次操作后序列的中位数最小可以是多少? 中位数:一个长度为m的序列,它的中位数是将这m数升序排列后第floor⌊2m+1​⌋个数。 输入描述: 输入包含T组测试用例,第一行一个整数T 每组测试用例第一行两个整数n,k 每组测试用例第二行n个整数a1 a2 … an 输出描述: 输出T行第i行为第i组测试用例的答案。 示例1 输入 1 5 1 4

srh20的博客 1347
上一篇: GDUT_排位赛题解报告_第4场_C. Defining Labels
下一篇: GDUT_排位赛题解报告_第5场_C. 积木
DevourPower
博客等级 码龄7年 52粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值