牛客練習賽B題 筱瑪的排列(找遞推規律)

2022-05-03 15:21:20 字數 1930 閱讀 1441

筱瑪的排列

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 524288k,其他語言1048576k

64bit io format: %lld

筱瑪是乙個快樂的男孩子。

筱瑪在一次數學考試中看到了這樣一道題:

求有多少個長度為 n 的不同的排列 a,滿足對於任意的 i 均有 a[a[i]] + i = n + 1。

聰明的筱瑪當然一眼就秒掉了這道題,現在他想來考考你。

一行乙個整數 n。
一行乙個整數,表示模 998244353 意義下的答案。
示例1

複製

4

複製

2

3 1 4 2

2 4 1 3

只有以上這兩個合法的排列 a。

1 ≤ n ≤ 10

多手寫(或者**敲)幾組樣例,

我羅列出前8組資料

n  1  2  3  4  5  6  7  8  

a  1  0  0  2  3  0  0  12

可以尋找出 a[i]=a[i-4]*(i-2)的規律

其a[0]=a[1]= 1

然後可以預處理一下,直接輸出答案了。

我的ac**:

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#define sz(a) int(a.size())

#define all(a) a.begin(), a.end()

#define rep(i,x,n) for(int i=x;i#define repd(i,x,n) for(int i=x;i<=n;i++)

#define pii pair#define pll pair#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)

#define ms0(x) memset((x), 0, sizeof((x)))

#define msc0(x) memset((x), '\0', sizeof((x)))

#define pb push_back

#define mp make_pair

#define fi first

#define se second

#define gg(x) getint(&x)

using

namespace

std;

typedef

long

long

ll;inline

void getint(int*p);

const

int maxn=1000010

;const

int inf=0x3f3f3f3f;/*

** template code * * starts here **

*/ll dp[maxn];

const ll mod=998244353ll;

ll n;

intmain()

while(~scanf("

%lld

",&n))

return0;

}inline

void getint(int*p)

while (ch == '

' || ch == '\n'

);

if (ch == '-'

) }

else

}}

牛客練習賽37 C題筱瑪的迷陣探險

牛客練習賽37 c題筱瑪的迷陣探險 ps 需要前置技能 dfs和字典樹 二分dfs 分別從 1,1 和 n,n 開始走n步,會發現無論如何走最後都會到達對角線上 找出對角線上對應的每個可能結果,開倆個陣列,分別存在倆個陣列中,在對應的點上的集合上,乙個插入到字典樹中,另乙個查詢和它異或最大的數。in...

牛客練習賽49 筱瑪愛線段樹 思維

太久沒做題了,看著有牛客就打了一場,果然自閉 題目大意也很明確,給定乙個長度為n,初始全為0的樹組。給定以下兩種操作 思維退化太快。開始老是想著建乙個可持久化的,或者怎瞎搞,發現複雜度都降不下來。後來絕處逢生,想到了將所有的操作倒著做,記錄每乙個操作被後面的操作總共引用了多少次,完美解決。複雜度也能...

牛客練習賽36B題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld rabbit大學畢業後找到了乙份實習工作,如果實習通過她就轉正了。實習期共有n天,其中有幾天公司集體放假,rabbit不用上班,剩下時間她可以選擇工作或者休息。rabb...