JZOJ 7 9C組第三題 排列的編碼

2021-08-21 07:44:17 字數 854 閱讀 7552

給出乙個長度為n序列,求出它在n的全排列中是第幾個。

這道題要找規律,設ml

[i] ml[

i]

為第i i

位後面有幾個數比第

i' role="presentation" style="position: relative;">i

i位小,通過一系列操作(詳見某蒟佬)可以得到答案an

s=an

s+ml

[i]∗

(n−i

)!a ns

=ans

+ml[

i]∗(

n−i)

!,資料範圍是50,要用高精度。

#include

#include

#include

using

namespace

std;

int n,cnt,f;

int a[51],ml[51],fac[51][101],ans[101],ad[101];

char c[110];

bool number(char x)

void init()

for (int i=0;i}void calc_ml()

void calc_fac()

}void akk(int x,int y)

}void add()

}int main()

int i=1;

while (!ans[i]&&i<100) i++;

while (i<=100)

init();

if (n!=-1) printf(",");

}}

JZOJ 7 9C組第二題 騎士問題

給出乙個8 8的棋盤,上面有一些障礙物,我們知道騎士是走l形的,現在給出騎士的座標和終點座標,求出騎士能到達的最少步數,如果不能到達就輸出not reachable。就是乙個簡單的bfs模板題,注意細節就好了。include include using namespace std int ans,h...

JZOJ 7 7C組第三題 頁

給出奇數個數,每次把它中間的數取出來放到最左邊或最右邊,求出最少取多少次可以讓這些數是從小到大的。bfs hash判重。每次左邊右邊操作一次,判斷之前有沒有出現過了,沒有就入隊。include define maxn 300017 using namespace std int n,state 10...

JZOJ 7 15C組第三題 漢諾塔

簡單的漢諾塔問題,改了一下規則 不能把盤子從1號柱上直接移到3號柱上,也不能把盤子直接從3號柱上移到1號柱上。現在給出盤子的數量,判斷它第m個狀態時每個盤子都在哪個柱上 初始狀態算0 這題正解比較神奇。但是我們可以用另一種方法,根據打表,我們能發現,當n為3時,狀態從0到27分別為 1 1 1 2 ...