Foreign 氣泡排序 暴力

2022-05-20 07:33:24 字數 1167 閱讀 1393

僅一行乙個整數表示答案。

按照題意生成排列,問要幾輪氣泡排序可以讓其有序(從小到大)。

首先我們先根據氣泡排序的性質來找個規律,因為乙個數前面有幾個數字比它大,這個數字就會向前移動幾位,然後再回到自己的位置。

那麼顯然就是:x表示在i位置前權值

那麼這個東西我們一眼就想到了70分(o(nlogn))就是用樹狀陣列來倒敘打標記維護字首和即可。

但是題目要求是o(n)的做法,怎麼辦呢?我們仔細推一下式子(打表)發現這個答案正是max(i-ai),那麼我們

暴力掃一遍即可。

1 #include2 #include

3 #include4 #include5 #include6 #include7 #include8 #include9

using

namespace

std;

10 typedef long

long

s64;

1112

const

int one=30000001;13

14int

n,s,b,c,d;

15int

a[one];

16int

ans;

1718

intget

()19

2829

intmain()

3038

39for(int i=1;i<=n;i++)

4043

44 printf("%d"

,ans);

45 }

view code

Foreign 朗格拉日計數 暴力

僅一行乙個整數表示答案。將乙個排列圍成乙個環,每個點有乙個值a i 若順時針三個點a b c 滿足 a a 我們不考慮環,從序列考慮,顯然可以統計的就是類似這種 123 231 312這個樣子的。我們考慮容斥,顯然123這種是可以直接計算的,231就是xx1 321,312就是3xx 321。顯然我...

氣泡排序 排序 氣泡排序

既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...

氣泡排序 氣泡排序法

冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個專案進行掃瞄,比較相領兩個專案的大小,若發現違背大小次序則進行互換,由此可以使n個專案中的最大者換到最後。然後對剩下的未排序好的專案再進行掃瞄,使它們的最大者換到表的最後。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃瞄以後,都縮短了待...