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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)

發(fā)布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? 題目大意:給出n個數(shù)的序列,每次可以交換相鄰的兩個數(shù),問把序列變成編號i在編號i+1左邊,編號1在編號n右邊(一個環(huán))最少需要多少步。如:35421最少交換兩次變?yōu)?4512。

? ? ? 一開始看到這題,只會O(n2),后來仔細想了一下,妙啊,妙不可言。

? ? ? 首先我們求出逆序?qū)?#xff0c;即為這個序列變成升序排列的最小次數(shù),問題就在于23451這類的怎么求了。突然,靈稽一動,我們只要把1改成6,然后就可以算出23456的答案,即23451的答案。至于方法,就是我們通過原序列逆序?qū)?shù)量減去1產(chǎn)生的逆序?qū)?shù)量,然后加上給序列添加6產(chǎn)生的逆序?qū)?shù)量,就是23451的答案了。接下來同理,把2改成7,于是我們就可以遞推出34512的答案了,以此類推算出所有情況的答案。。。總結(jié)一下方法就是把上一次算出來的答案減去現(xiàn)在序列里最小數(shù)產(chǎn)生的逆序?qū)?shù)量,然后加上給序列添加最大數(shù)+1產(chǎn)生的逆序?qū)?shù)量。

? ? ? 顯然,序列里沒有一個數(shù)比最小數(shù)小(一句廢話>_<),所以它產(chǎn)生的逆序?qū)?shù)量就是最小數(shù)的位置-1;顯然,序列里沒有一個數(shù)比最大數(shù)大(兩句廢話>_<),所以最大數(shù)產(chǎn)生的逆序?qū)?shù)量就是這個數(shù)后面的數(shù)的數(shù)量,即n-最大數(shù)的位置,也就是ans[i]=ans[i-1]-(pos[i]-1)+(n-pos[i]),然后我們就輸出min(ans[i])就行啦。

? ? ? 妙啊,妙不可言

代碼如下:

uses math; varn,i:longint;ans,sum:int64;a,b,c:array[0..1000000]of int64;procedure merge(l,m,r:longint); varl1,m1,k,i:longint; beginl1:=l;m1:=m+1;k:=l;while (l1<=m)and(m1<=r)dobeginif a[l1]<=a[m1] thenbeginb[k]:=a[l1];inc(l1);inc(k);endelsebeginb[k]:=a[m1];inc(m1);inc(k);ans:=ans+m-l1+1;end;end;while l1<=m dobeginb[k]:=a[l1];inc(l1);inc(k);end;while m1<=r dobeginb[k]:=a[m1];inc(m1);inc(k);end;for i:=l to r do a[i]:=b[i]; end;procedure sort(l,r:longint) ; varmid:longint; beginif l=r then exit;mid:=(l+r)>>1;sort(l,mid);sort(mid+1,r);merge(l,mid,r); end;beginreadln(n);for i:=1 to n dobeginread(a[i]);c[a[i]]:=i;end;sort(1,n);sum:=ans;for i:=1 to n dobeginsum:=sum-(c[i]-1)+(n-c[i]);ans:=min(ans,sum);end;writeln(ans); end. View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/Sakits/p/5837039.html

總結(jié)

以上是生活随笔為你收集整理的bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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