日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforce - 920C- Swap Adjacent Elements 排序|思维

發(fā)布時(shí)間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforce - 920C- Swap Adjacent Elements 排序|思维 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意

輸入n
再輸入n個(gè)數(shù)為1~n的一種排列
再輸入n-1個(gè)1或0,1表示該元素可以和后面的元素進(jìn)行交換,0表示不能和后面的元素進(jìn)行交換
讓我們判斷這個(gè)數(shù)組能否經(jīng)過交換得到一個(gè)遞增序列

分析

我們發(fā)現(xiàn)連續(xù)的1的范圍內(nèi)再加上后面一個(gè)0 此區(qū)間內(nèi)任意一個(gè)元素是可以通過向后交換去到任意位置的
因?yàn)檫B續(xù)的1表示區(qū)間內(nèi)所有元素不僅可以向后交換,也可以說是后一個(gè)元素可以向前交換。然而0前面的元素卻不能交換到0后面 所以每個(gè)小范圍獨(dú)立 只要把所有那些連續(xù)的1+后一個(gè)0 符合條件的范圍內(nèi)全部排序 之后的序列是個(gè)遞增序列 即滿足
否 則不滿足

code

package main;import java.util.Arrays; import java.util.Collections; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main{public static void main(String [] args){int n;Scanner sc = new Scanner(System.in);int[] a = new int[200010];int[] bok = new int[200010];int[] pos = new int[200010];n = sc.nextInt();for(int i=1;i<=n;i++){a[i] = sc.nextInt();}int tmp = 0,s=-1,e=-1;String line = sc.next();for(int i=0;i<line.length();i++){tmp = line.charAt(i)-'0';if(s==-1&&tmp==1)s=i;else if(tmp==0&&s!=-1){e=i+1;Arrays.sort(a,s+1,e+1);s=-1;e=-1;}}if(tmp==1&&s!=-1)Arrays.sort(a,s+1,n+1);int i;for(i=1;i<=n;i++)if(a[i]!=i){System.out.println("NO");break;}if(i==n+1)System.out.println("YES");} }

總結(jié)

以上是生活随笔為你收集整理的Codeforce - 920C- Swap Adjacent Elements 排序|思维的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。