題目在這
題意:求1-k的排列中第n大的序列,題目給出n的計算方法:
n = si*(k-1)+s2*(k-2)…+sk*0!; 並給你s1~sk
**分析:**n好大好大,,,,,
n是給的乙個乙個的階乘和,想想:k位的排列數是k!
從0!到(k-1)!,,,似乎,對應著什麼
每乙個s[i]對應全排列的一位數字
(蚊子數學太弱,,,證明什麼的,,,額)
不過看到乙個乙個階乘還是可以yy出這麼乙個寫法的:
每讀入乙個s[i],選取剩下的數中第s[i]+1小的,
有點拗口是吧,,,拿樣例模擬模擬,就搞出來了
k很大,有5w,如果每次都赤裸裸的找的話,
平方複雜度必然tle,開個線段樹吧,
權值是0或1,1表示沒被用過,0表示被用過了
維護區間和。。。。每次取剩下的第s[i]+1個數
#include
#include
#include
#include
using
namespace
std;
const
int n=140000;
int ans;
struct tree
}void get(int t,int k,int sum)
int mid=(l[t]+r[t])>>1;
if (sum+su[t<<1]>=k)get(t<<1,k,sum);
else get(t<<1^1,k,sum+su[t<<1]);
su[t]=su[t<<1]+su[t<<1^1];
}}t;int main()
puts("");
}return
0;}
UVA 11525 好大好大的排列(線段樹)
題目在這 題意 求1 k的排列中第n大的序列,題目給出n的計算方法 n si k 1 s2 k 2 sk 0 並給你s1 sk 分析 n好大好大,n是給的乙個乙個的階乘和,想想 k位的排列數是k!從0!到 k 1 似乎,對應著什麼 每乙個s i 對應全排列的一位數字 蚊子數學太弱,證明什麼的,額 不...
UVA 11525 好大好大的排列(線段樹)
題目在這 題意 求1 k的排列中第n大的序列,題目給出n的計算方法 n si k 1 s2 k 2 sk 0 並給你s1 sk 分析 n好大好大,n是給的乙個乙個的階乘和,想想 k位的排列數是k!從0!到 k 1 似乎,對應著什麼 每乙個s i 對應全排列的一位數字 蚊子數學太弱,證明什麼的,額 不...
外面下了好大的雨
外面下了好大的雨!走進書店,手指劃過一排排被封印著的書,各種各樣的書籍,我有些頭暈。手指劃過一草的 畢業後我們一無所有 的時候,停了下來。不知道為什麼,突然很想哭。無關天氣,無關心情。突然發現自己很可悲。走過那麼多的路,看過那麼多的事,見過那麼多的人,卻沒有一樣是屬於自己的。我,什麼都沒有。18年,...