比賽的時候切的,可惜沒搶到首 a.
權值和等於 $\sum_^ \sum_^ a_ \times a_ \times f(j-i+1) \times f(n-j+i+2)$,最後再除以 4.
然後這裡的 $f(n)$ 就代表 $n$ 個點構成的圓環的不相交生成子圖的方案數.
可以將前 $5$ 項打表打出來,上 $oeis$ 找到通項公式,然後就可以拿到 $40$pts 的好成績.
觀察上面的式子,我們發現可以列舉 $f(j-i+1)$ 的長度,然後就要求有貢獻的點對距離必須為 $(j-i+1)$,這個用 ntt 來求即可.
code:
#include #include #include #define n 100007#define ll long long
#define mod 998244353
#define setio(s) freopen(s".in","r",stdin)
using namespace std;
int a[n],pw[n],n,val[n],f[n],a[n<<2],b[n<<2];
int qpow(int x,int y)
}return tmp;
} int get_inv(int x)
void ntt(int *a,int len,int op)
for(int j=len>>1;(k^=j)>=1);
}
for(int l=1;lfor(int i=0;i}
}if(op==-1)
}}
void init()
a[0]=a[1]=1;
for(int i=2;if[2]=2;
for(int i=3;i}
int main()
for(int i=0;iint lim;
for(lim=1;lim<=2*n;lim<<=1);
ntt(a,lim,1),ntt(b,lim,1);
for(int i=0;intt(a,lim,-1);
int ans=0,inv2=get_inv(4);
for(int i=1;iprintf("%d\n",(ll)ans*get_inv(f[n])%mod);
return 0;
}
強迫症的序列
小a是乙個中度強迫症患者,每次做陣列有關的題目都異常難受,他十分希望陣列的每乙個元素都一樣大,這樣子看起來才是最棒的,所以他決定通過一些操作把這個變成乙個看起來不難受的陣列,但他又想不要和之前的那個陣列偏差那麼大,所以他每次操作只給這個陣列的其中n 1個元素加1,但是小a並不能很好的算出最優的解決方...
強迫症的自我恢復
怎樣克服強迫症?這是很多的人比較關注的乙個問題。強迫症給人們的工作和生活帶來很嚴重的影響,如果不及時進行 對人的健康損害是很大的。那麼怎樣克服強迫症呢?下面就介紹一些怎樣克服強迫症的除錯方法,希望能幫助到更多的患者朋友。1 了解 和發病機制 強迫症與一定的人格特徵有密切關係。具有強迫症的人,在性格上...
J 強迫症的序列
題目描述 小a是乙個中度強迫症患者,每次做陣列有關的題目都異常難受,他十分希望陣列的每乙個元素都一樣大,這樣子看起來才是最棒的,所以他決定通過一些操作把這個變成乙個看起來不難受的陣列,但他又想不要和之前的那個陣列偏差那麼大,所以他每次操作只給這個陣列的其中n 1個元素加1,但是小a並不能很好的算出最...