首页 > 其他分享 >T1 此方的身高排序 题解

T1 此方的身高排序 题解

时间:2024-07-18 12:40:20浏览次数:12  
标签:遍历 题解 元素 T1 最小值 ans 数组 此方

题目描述:

体育馆里有\(n\)个人正在排队等待着上体育课,他们每个人都不一样高。
此方想要把队伍从小个子到高个子进行排序,即让队伍身高为升序。
此方每次调出一人,让此人和在他后面的人比身高,如果比对方高,则两人交换位置并和下一个人继续比较,直到比对方矮或者已经在队尾。
现在给出一个长度为\(n\),元素为\(1\sim n\)的排列,求最少的选择次数,使队伍变为升序。

题意简述

现在给出一个长度为\(n\),元素为\(1\)到\(n\)的数组,每次选择一个元素并与下一个元素比较,若比下一个元素大就交换,直到比下一个元素小或到数组尾端,求最少的选择次数,使数组变为升序。

思路

看到题目,相信大部分人首先想到的就是冒泡排序,在数据范围较小时,但一看数据范围\(1\leq n\leq 10^6\),而冒泡排序的最坏时间复杂度为\(O(N^2)\),显然无法通过本题。
那我们如何使用单重\(for\)循环写出这道题呢?
我们先考虑从前往后遍历,如果选择第\(i\)个人移动,那么当他移动到当前正确的位置时,它后面的人可能也要移动,然后再把第\(i\)个人移动,反而得不偿失。
那我们考虑从后往前遍历,并用变量\(ans\)记录选择次数。
假设数组\(a\)中的最小值为\(a_n\),因为为\(a_n\)是数组最后一个元素,本身不用操作。从\(a_{n-1}\)开始遍历整个数组,遍历到到比当前最小值大的元素就把元素更新成当前最小值。若\(a_i\)比最小值大,需要选择,\(ans+1\),遍历完后输出\(ans\)即可。

\(AC\ \ Code\)

#include<bits/stdc++.h>
using namespace std;
int n,a[1000005],mi,ans;
int main()
{
	scanf("%d",&n);
	for(int i(1);i<=n;++i)scanf("%d",a+i);
	mi=a[n];
	for(int i(n-1);i;--i)
	{
		if(mi<a[i])a[i]=mi,++ans;
		mi=min(mi,a[i]);
	}
	printf("%d",ans);
	return 0;
}

标签:遍历,题解,元素,T1,最小值,ans,数组,此方
From: https://www.cnblogs.com/988176-/p/18309297

相关文章

  • CF208E 题解
    BloodCousins前置知识:线段树合并。我们先把题目转化一下。这里先设\(v\)的\(p\)级祖先为\(u\),事实上要求的东西就是\(u\)的\(p\)级后代的个数减\(1\),减\(1\)是因为要把自己减去。显然这个目标点\(t\)要满足两个要求:\(t\)在\(u\)子树内。设\(dep_u\)表......
  • P3242 接水果 题解
    Statement树,给\(m\)条带权路径\((a,b,v)\),\(q\)次询问包含\((u,v)\)的路径中的第\(k\)小权值.Solution好题!这篇题解延伸出了很多东西。首先路径的包含关系转为矩形(二维限制关系)是比较显然的.具体地,\((u,v)\)包含\((a,b)\)有两种情况:\(u,v\)无祖先关系:\(a\)在......
  • P1912 [NOI2009] 诗人小G 题解
    我们设\(s_i\)表示前\(i\)个句子的长度之和,这样就有dp\[f_i=\min_{j<i}\big\{f_j+|s_i-s_j+i-j-1-L|^P\big\}\]我们设\(w(l,r)=|s_r-s_l+r-l-1-L|^P\),如果\(w\)满足四边形不等式,则原dp具有决策单调性。设\(u=(s_i+i)-(s_j+......
  • [题解]P1452 【模板】旋转卡壳 | [USACO03FALL] Beauty Contest G
    P1452【模板】旋转卡壳|[USACO03FALL]BeautyContestG旋转卡壳模板题。凸包用的是Andrew算法,就不详述了,具体可以查查资料了解,但提一嘴Andrew算法的一些细节问题:Andrew算法的一些细节Andrew算法的模板代码如下:sort(a+1,a+1+n,cmp);st[++top]=1;for(inti=2;i<=n;i++){ ......
  • 【数学建模】——多领域资源优化中的创新应用-六大经典问题解答
    目录题目1:截取条材题目 1.1问题描述1.2数学模型1.3求解1.4解答题目2:商店进货销售计划题目2.1问题描述2.2数学模型2.3求解2.4解答题目3:货船装载问题题目3.1问题重述 3.2数学模型3.3求解3.4解答题目4:城市消防站选址问题 题目4.1问题重述4.2......
  • 题解:P10733 [NOISG2019 Prelim] Lost Array
    题解:P10733[NOISG2019Prelim]LostArray思路对于任意\(\min(X_{A_{i}},X_{B_{i}})=C_{i}\)。只要让\(X_{A_{i}}\)与\(C_{i}\)取\(\max\)值。\(X_{B_{i}}\)与\(C_{i}\)取\(\max\)值。这样可以让\(\min(X_{A_{i}},X_{B_{i}})\)绝对是\(C_{i}\)。对于为赋值......
  • 题解:P10781 【MX-J1-T1】『FLA - III』Spectral
    本题的主要思路就是数学。首先,让我们先来打一个表。\(i\)\(1\)\(2\)\(3\)\(4\)\(\dots\)\(T_{i}\)\(k\)\(1.5k\)\(1.5k\)\(1.375k\)\(\dots\)易用肉眼看见,自\(T_{3}\)之后数越来越小,于是我们大胆猜测,若\(n\ne1\),则它的最大值是\(1.5k\)否则\(k\)。......
  • test1_1
    web签到题题目web签到题分析F12打开html文件:将注释进行Base64解码得到flag。web2题目最简单的SQL注入分析看着应该是SQL注入题。先尝试使用admin和123456登录,发现没有任何回显。看来报错被屏蔽了。显然admin栏如果注入成功则属于字符型注入。尝试......
  • test1_2
    web8题目做到这一题,基本可以写简单的注入工具了分析界面和上一题web7相同,但在查看回显位置的步骤时出现过滤:反正只存在三个可能的回显位置,我们选择逐一尝试找到回显点,但还是被过滤了:猜测是对联合查询unionselect存在过滤……尬住。…………………………2024/4/......
  • test1_1_2
    web5题目分析php代码审计题,看看代码:<?phperror_reporting(0);//出错不报错?><htmllang="zh-CN">//中文语言<head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"/><metaname=......