• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Codeforces Round #258 (Div. 2) B. Sort the Array (模拟)

mysql 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

题目链接:Codeforces Round #258 (Div. 2) B. Sort the Array 题意:给出一串序列要就通过一次反转一段子序列使得变化后的序列严递增。 思路:从左向右找出首次下降的,从右向左找出首次下降的,分别记录下标,再在这个段区间里反转。最后判断是否递增。 反

题目链接:Codeforces Round #258 (Div. 2) B. Sort the Array

题意:给出一串序列要就通过一次反转一段子序列使得变化后的序列严格递增。

思路:从左向右找出首次下降的,从右向左找出首次下降的,分别记录下标,再在这个段区间里反转。最后判断是否递增。

反转想到字符串(或STL)有个反转库函数。读者可以试试。

AC代码:

#includeint main(){	int n,i;	int x,y,j;	int a[100010];	while(scanf("%d",&n)!=EOF)	{		for(<div style="color:transparent">本文来源gaodai.ma#com搞##代!^码网(</div>i=1;i<=n;i++)			scanf("%d",&a[i]);		x=y=-1;		for(i=1;i=a[i])			{				x=i-1;				break;			}		}		for(i=n;i>=1;i--)		{			if(a[i-1]>=a[i])			{				y=i;				break;			}		}		//一开始就是递增的		int t;		if(x==y && x==-1)		{			printf("yes\n%d %d\n",1,1);			continue;		}		//反转。		for(i=x,j=1;j<=(y-x+1)/2;i++,j++)		{			t=a[i];			a[i]=a[y+x-i];			a[y+x-i]=t;		}		int mark=0;		for(i=1;i=a[i])			{				mark=1;				break;			}		}		if(mark==1)			printf("no\n");		else			printf("yes\n%d %d\n",x,y);	}return 0;}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Codeforces Round #258 (Div. 2) B. Sort the Array (模拟)
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址