考慮到最後a[i]都要等於i,並且每個 a[i] < i 的a[i] 一輪最多向前走一次,所以局數至少是 max。
又因為對於a[i] < i來說,一輪不動意味著 a[i-1] < a[i] ,所以 i-1 - a[i-1] 是》= i - a[i] 的,所以要麼該位置不是max的位置,要麼就會向前移動,所以局數正好就是 max啦。
#include#define ll long longusing namespace std;
const int maxn=3e7+5;
int a[maxn],n,s,b,c,d,ans;
const int max(int &x,int &y)
int main()
printf("%d\n",ans);
return 0;
}
bzoj 3580 氣泡排序
下面是一段實現氣泡排序演算法的c for int i 1 ia j 1 swap a j a j 1 其中待排序的a陣列是乙個1 n的排列,swap函式將交換陣列中對應位置的值。對於給定的陣列a以及給定的非負整數k,使用這段 執行了正好k次swap操作之後陣列a中元素的值會是什麼樣的呢?輸入檔案共2...
BZOJ 5416 Noi2018 氣泡排序
bzoj 5416 noi2018 氣泡排序 dp 組合數 樹狀陣列 好題。合法的排列的交換次數剛好是交換次數的下界,也就是說不能有多餘的交換。也就是對於ai這個數,只能從i到ai這乙個方向走。考慮x,y,z三個數 x y z y需要和x z各交換一次,這顯然不能使y這個數滿足只向乙個方向移動這個條...
氣泡排序 排序 氣泡排序
既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...