luoguP4491&&bzoj5306[HAOI2018]染色 NTT 容斥原理 組合數學
[HAOI2018]染色
分析
一個神奇的容斥。
題目中的恰好提示我們要把它轉化成至少
設
表示出現至少
種出現次數為
的顏色的方案數。
首先欽定
個顏色。
其次欽定
個位置。
把他們全排列(可重集的排列)
剩下
種顏色,
個位置,可以瞎放
於是
注意我們只需要處理出
的
求出這個玩意兒可以通過線性處理階乘和階乘逆元做到
搞出來
剩下根據容斥原理。
那個
是因為從每個
都被
重複計算了
次。
接下來就是套路了。
即可。
程式碼
#include<bits/stdc++.h>
const int N = 262144, M = 1e7 + 10, P = 1004535809;
int ri() {
char c = getchar(); int x = 0, f = 1; for(;c < '0' || c > '9'; c = getchar()) if(c == '-') f = -1;
for(;c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) - '0' + c; return x * f;
}
int w[N], R[N], A[N], B[N], sz[N], f[M], g[M], v[N], tp, L, InvL, n;
int fix(int x) {return (x >> 31 & P) + x;}
int add(int a, int b) {return a += b, a >= P ? a - P : a;}
int mul(int a, int b) {return 1LL * a * b % P;}
int Pow(int x, int k) {
int r = 1;
for(;k; x = mul(x, x), k >>= 1)
if(k & 1)
r = mul(r, x);
return r;
}
int Inv(int x) {return Pow(x, P - 2);}
void Pre(int m) {
L = 1; int x = 0;
for(;(L <<= 1) < m; ++x) ;
for(int i = 1;i < L; ++i)
R[i] = R[i >> 1] >> 1 | (i & 1) << x;
w[0] = 1; int wn = Pow(3, (P - 1) / L);
for(int i = 1;i < L; ++i)
w[i] = mul(w[i - 1], wn);
InvL = Inv(L);
}
void DFT(int *F) {
for(int i = 0;i < L; ++i)
if(i < R[i])
std::swap(F[i], F[R[i]]);
for(int i = 1, d = L >> 1; i < L; i <<= 1, d >>= 1)
for(int j = 0;j < L; j += i << 1) {
int *l = F + j, *r = F + j + i, *p = w, tp;
for(int k = i; k--; ++l, ++r, p += d)
tp = mul(*r, *p), *r = fix(*l - tp), *l = add(*l, tp);
}
}
int C(int m, int n) {return mul(mul(f[m], g[n]), g[m - n]);}
void Get(int n) {
f[0] = 1; for(int i = 1;i <= n; ++i) f[i] = mul(f[i - 1], i);
g[n] = Inv
相關推薦
luoguP4491&&bzoj5306[HAOI2018]染色 NTT 容斥原理 組合數學
[HAOI2018]染色
題目傳送門 luogu bzoj
分析
一個神奇的容斥。 題目中的恰好提示我們要把它轉化成至少 設
f
[
bzoj 4517: [Sdoi2016]排列計數【容斥原理+組合數學】
沒有 原理 getchar() display del d+ getchar esp const 第一個一眼就A的容斥題!
這個顯然是容斥的經典問題------錯排,首先考慮沒有固定的情況,設\( D_n \)為\( n \)個數字的錯排方案數。
\[
D_n=n!-\su
BZOJ4710 JSOI2011分特產(容斥原理+組合數學)
顯然可以容斥去掉每人都不為空的限制。每種物品分配方式獨立,各自算一個可重組合乘起來即可。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include&
BZOJ4559 JLOI2016成績比較(容斥原理+組合數學+斯特林數)
容斥一發改為計算至少碾壓k人的情況數量,這樣對於每門課就可以分開考慮再相乘了。剩下的問題是給出某人的排名和分數的值域,求方案數。枚舉出現了幾種不同的分數,再列舉被給出的人的分數排第幾,算一個類似斯特林數的東西即可。後一部分與碾壓幾人是無關的,預處理一下,複雜度即為三方。當然和四方跑得也差不多快。
資
[BZOJ4710][Jsoi2011]分特產(容斥原理+組合數學)
題目描述
傳送門
題解
這道題的限制其實挺不明顯的,應該是“每個人都至少有一個”
也就是說對於所有的物品,將其劃分成n部分,每部分不能為空,問總的方案數
可以如果利用插板法的話,把n個相同的小
UVALive 7040 Color (容斥原理 + 組合數學遞推公式 + 求逆元 + 基礎數論)
傳送門
英文題目:
Recently, Mr. Big recieved n owers from his fans. He wants to recolor those owers with m colors. The
owers are put in
[BZOJ2839]集合計數(容斥原理+組合數學)
題目描述
傳送門
題解
首先考慮固定k個元素,方案為Ckn
還剩下2n−k個集合,可以任選若干個集合C12n−k+C22n−k+..+C2n−k2n−k=22n−k
但是這樣選出來的有可能有不
LibreOJ #2541.「PKUWC 2018」獵人殺 分治NTT+容斥原理
題意
獵人殺是一款風靡一時的遊戲“狼人殺”的民間版本,他的規則是這樣的:
一開始有nn個獵人,第ii個獵人有仇恨度wiwi,每個獵人只有一個固定的技能:死亡後必須開一槍,且被射中的人也會死亡。
然而向誰開槍也是有講究的,假設當前還活著的獵人有[i1...i
HDU 4390 Number Sequence (容斥原理+組合計數)
osi freopen ret dsm algo .cn iterator push_back man
HDU 4390
題意:
大概就是這樣。不翻譯了:
【BZOJ3294】放棋子(動態規劃,容斥,組合數學)
ref efi amp 顏色 直接 using .org bzoj mat 【BZOJ3294】放棋子(動態規劃,容斥,組合數學)
題面
BZOJ
洛谷
題解
如果某一行某一列被某一種顏色給占了,那麽在考慮其他行的時候可以直接把這些行和這些列給丟掉。
那麽我們就可以寫出一個
【BZOJ 3027】 3027: [Ceoi2004]Sweet (容斥原理+組合計數)
3027: [Ceoi2004]Sweet
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 71 Solved: 34
Description
John得到了n罐糖果。不同的糖果罐,糖果的種類不同(即同一個糖果罐裡的糖果種類是相同的,不同的糖果罐裡的糖果的種
HDU 6314 2018HDU多校賽第二場 Matrix(容斥原理+組合計數)
Matrix
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 332768/332768 K (Java/Others)
Total Submission(s): 445 Accepted Submiss
[BZOJ5306][HAOI2018]染色(容斥+FFT)
urn can blank lld ons out bool main define https://www.cnblogs.com/zhoushuyu/p/9138251.html
註意如果一開始F(i)中內層式子中j枚舉的是除前i種顏色之外還有幾種出現S次的顏色,那麽
BZOJ_2393_Cirno的完美算數教室&&BZOJ_1853_[Scoi2010]幸運數字 _深搜+容斥原理
代碼 優化 幸運 mes esp amp 如果 algorithm algo BZOJ_2393_Cirno的完美算數教室&&BZOJ_1853_[Scoi2010]幸運數字 _深搜+容斥原理
題意:
~Cirno發現了一種baka數,這種數呢~只含有2
HDU 4135——Co-prime(容斥原理&&二進位制列舉)
題目連結:
模板
void prime(ll n)
{
k=0;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
Prime[k++]=i;
while
【bzoj3456】城市規劃 容斥原理+NTT+多項式求逆
方案 所在 scanf 整理 輸入 eof 輸出 std define 題目描述
求出n個點的簡單(無重邊無自環)無向連通圖數目mod 1004535809(479 * 2 ^ 21 + 1).
輸入
僅一行一個整數n(<=130000)
輸出
僅一行一個整
[BZOJ4487][JSOI2015]染色問題(容斥)
一開始寫了7個DP方程,然後意識到這種DP應該都會有一個通式。
三個條件:有色行數為n,有色列數為m,顏色數p,三維容斥原理仍然成立。
於是就是求:$\sum_{i=0}^{n}\sum_{j=0}^{m}\sum_{k=0}^{p}(-1)^{n+m+p-i-j-k}\times C_n^i\times
POJ 1091 容斥原理
.org 質因子 blank dfs tar cin href strong 元組 鏈接:
http://poj.org/problem?id=1091
題意:
給你兩個正整數n,m,讓你求長度為n+1的滿足條件的一個等式:a[1]*x1+a[2]*x2+a[3]*x
容斥原理
clu images class 又是 對象 title href 推理 計算 容斥原理(Inclusion–exclusion principle),是指在計數時,必須註意無一重復,無一遺漏,為了使重疊部分不被重復計算,人們研究出一種新的計數方法。這種方法的基
POJ 2773 容斥原理
for log cto tor ans 個數 ret num void 鏈接:
http://www.cnblogs.com/MashiroSky/p/5913989.html
題意:
給出兩個數m,k,要求求出從1開始與m互質的第k個數。
題解:
二分一個答案m