題目鏈結
題目大意:稱乙個長度為2n
的數列是有趣的,當且僅當該數列滿足以下三個條件
它是乙個1~2n的排列a1
<
…n−1,
a2<
…n a2
i−1i
題解:丟題解跑qaq
我的收穫:2333
#include
using
namespace
std;
#define maxn 3000005
int n,p,ans=1,tot;
int f[maxn],prime[maxn],pos[maxn];
bool isprime[maxn];
int read()
void change(int x,int val)
int power(int a,int k,int p)
int main()
}for (int i=2*n;i>n+1;i--) change(i,1);
for (int i=1;i<=n;i++) change(i,-1);
for (int i=1;i<=tot;i++) if (f[prime[i]]) ans=1ll*ans*power(prime[i],f[prime[i]],p)%p;
printf("%d\n",ans);
return
0;}
BZOJ 1485 HNOI2009 有趣的數列
bzoj 1485 hnoi2009 有趣的數列 卡特蘭數 我們稱乙個長度為2n的數列是有趣的,當且僅當該數列滿足以下三個條件 1 它是從1到2n共2n個整數的乙個排列 2 所有的奇數項滿足a1 3 2n 1,所有的偶數項滿足a2 4 2n 3 任意相鄰的兩項a2i 1與a2i 1 i n 滿足奇數...
bzoj1485 HNOI2009 有趣的數列
思路 首先限制數很多,逐步來考慮,限制一很容易滿足,考慮限制二,也就是讓奇數字和偶數字上的數遞增,限制三就是讓奇數字上的數小於奇數字加一對應的偶數字上的數,那麼我們可以把形成序列的過程看成加數的過程,從小到大逐步加 這顯然滿足限制一 然後加數的條件一是從小到大依次放奇數字或偶數字,因此也滿足限制二,...
BZOJ1485 HNOI2009 有趣的數列
題解 考慮按順序從小到大,加入數字,將加入奇數字置看作入棧,加入偶數字置看作出棧。為什麼可以?考慮我們要保證相鄰奇數小於偶數,所以必須先填上乙個奇數的位置才能填偶數的位置,既時刻保證奇數 偶數,最終奇數等於偶數。觀察到這個性質,我們應該聯想到卡特蘭數了,套用公式求解。本題模數可能為合數,不一定存在逆...