習題 奇怪的報數遊戲

2021-09-13 21:52:02 字數 682 閱讀 1429

思路

其中二分法就是用來判斷左右還剩幾個位置,是不是比每個人報的數大,大的話就填進去。

像這個題目,可以先用暴力想一想該怎麼做,然後用區間資料結構來解決

比如這道題:

**

#include

using

namespace std;

const

int max_n =

500050

;int c[max_n+5]

,rank[max_n]

,a[max_n]

,n;int

lowbit

(int x)

void

change

(int x,

int sum)

intgetsum

(int x)

intmain()

a[1]=

0;for(

int i = n;i>=

1;i--

) rank[i]

=l;change

(l,1);

}for

(int i =

1;i<=n;i++

)return0;

}

部分參考計蒜客解答。侵刪。

樹狀陣列 奇怪的報數遊戲

大致思路 一看,序列,資料很大,暴力可能就是去遍歷,題中還有 前面有多少 的字眼,感覺就是用樹狀陣列做。正向分析感覺有點困難,我們反向來想,如果是序列的最後乙個人,他前面有a人的編號比自己小,而他前面就是除他之外的所有人,所以他的編號應該就是a 1.那麼倒數第二個人呢?他前面的人是除他 而且除去最後...

計蒜客 奇怪的報數遊戲

樹狀陣列 二分 這裡先給出乙個公式 第 i 個數的編號 i 之前比 i 小的總數量 i 之後比 i 小的總數量 1 例如 1 4 3 6 2 5 這個序列,我們可以用這個序列來驗證上述的公式,比如3 1 3前邊只有1比3小,所以只有1個 1 3後邊只有2比3小,所以只有1個 1,對吧。已經找出來的編...

習題8 4 報數

報數遊戲是這樣的 有n個人圍成一圈,按順序從1到n編好號。從第乙個人開始報數,報到m 本題要求編寫函式,給出每個人的退出順序編號。函式介面定義 void countoff int n,int m,int out 其中n是初始人數 m是遊戲規定的退出位次 保證為小於n的正整數 函式countoff將每...