カントールは、自己のノートを拡大します

ロス・バレーのボード上の元のタイトル
https://www.luogu.org/problem/P2524
もちろん、私はそれを少し行います。フェンウィックツリーが使用
主に式
A [1] (1-N-)+ ...... + A [I]ニッケル(Ni)] + A [Iは+ 1] (-Ni。1)!... .... [N-] 0!
(Ni)から!階乗であり、[I]この位置でiは、[i]は彼の([n]はもちろん0である)の数よりも少ないがあるれる
リビジョン逆ああのために!
それは、(NI)に配置することができるしている、もちろんプッシュは純粋に私の文である(その前に配置されており、私はこのポジションを持っている場合、[i]は、それの数よりも少ないです!私は、この式は理解して)とにかく、それは式セット
テンプレートのバージョンを強制的にロードされ、以下

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
#include<map> 
using namespace std;
#define re register int
inline int read(){
    int x=0,ff=1;char c=getchar();
    while(c<'0'||c>'9'){if(c=='-')ff=-1;c=getchar();}
    while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
    return x*ff;
}
int n,c[15],f[15],ss;
inline int fs(int x){return x&-x;}
struct tt{
    int ii,x;
}b[15];
char a[15];
bool cmp(tt xx,tt yy){
    return xx.x<yy.x;
}
inline int find(int x){
    int s=0;
    while(x<=n){
        s+=f[x];x+=fs(x);
    }
    return s;
}
inline void add(int x){
    while(x){
        f[x]++;x-=fs(x);
    }
}
signed main(){
    n=read();c[1]=1;
    for(int i=2;i<=n;i++)c[i]=c[i-1]*i;
    scanf("%s",a+1);
    for(int i=1;i<=n;i++){
        b[i].x=a[i]-'0';b[i].ii=i;
    }
    sort(b+1,b+n+1,cmp);
    for(int i=1;i<=n;i++){
        ss+=find(b[i].ii)*c[n-b[i].ii];
        add(b[i].ii);
    }
    printf("%d\n",ss+1);
    return 0;
}

もちろん、そこにある逆カントールの拡張は
、例えば、それは(すなわち、カントールは計算値を発売し、健康グループは最初の配置が働い打ち上げ並べ番目(X + 1)第一号だったあなたに伝えるために、あなたにn個の要素の順列を与えます、0であり、全体をバックアップに移動し、それは、(1つの)出力が追加されたコード上に)0から理解することができる
、我々は階乗モジュロために使用できる
(X%を有する第(N + 1) !)計算はYであると仮定すると、その後ろに、その要素のY小さなを示し、それは(値によってソート)残りの部分(Y + 1)の要素であり
、次いで、X = X /((N +せ 1) !)、ソート、選択の現在の数を、削除
してからX-(N-!)%を失望させない
................を
1つの階乗まで!、残りは数あります最後に、多くの
引用された例:
61(1,2,3,4,5)が34152に順列及び組合せから計算することができる所与の
次の手順で
最初のより小さい4分の61 2 I = 13、説明、説明と! 2、最初の3の数があります。
13/3と!= 1 2は、第二の数が第2未満である後に記述された命令は、第4ビット2を有しています。
1/2!= I 01、第3のビットの後に記述された命令が第3の数以上である、第三のビットが1です。
1/1!= 4番目のビットが1よりもI 1 0、第二の数の後に記述された命令が少ない、4番目のビット5。
:中
---------------------
著者:I-曲線
出典:CSDN
オリジナル:https://blog.csdn.net/qq_38701476/article/details/81003290
兄のおかげ例。
それはそれをテストするためにこれらの、およびセット式に発足カントール必要があります

おすすめ

転載: www.cnblogs.com/ffrxy01bt/p/11260951.html
おすすめ