UVa-11525-Permutation

出處:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2520

解題策略:segment tree,支援刪除元素與取第k大元素


排列的可能性的第∑ K i=1 Si ∗ (K − i)! 個,假設輸入以下。

4

2 1 1 0

S1 = 2,表示剩餘數字中(1,2,3,4)有兩個數字比第一個數字小,所以第一個數字為3,排列可能性為2*3!,相當於取第3大的數字。

S2 = 1,表示剩餘數字中(1,2,4)有一個數字比第二個數字小,所以個數字為2,排列可能性為1*2!,相當於去除第一個數字3後,取第2大的數字。

S3 = 1,表示剩餘數字中(1,4)有一個數字比第個數字小,所以第個數字為4,排列可能性為1*1!,相當於去除數字3與數字2後,取第2大的數字。

S4 = 0,表示剩餘數字中(1)有0個數字比第個數字小,所以第個數字為1,排列可能性為0*0!,相當於去除數字3與數字2與數字4後,取第1大的數字。

所以解答為3 2 4 1

完整程式碼