筱瑪的排列
時間限制: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 22 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...