前言
質量還可以
d.容斥(二項式反演)
題目大意:
給你n
nn個小球,每個小球有乙個顏色a
ia_i
ai.保證一種顏色最多出現兩次。問你多少種排列方式使得相鄰兩項之間顏色不同.
n ≤1
e5
n \leq 1e5
n≤1e5
題目思路:
發現顏色最多出現兩次.我們可以容斥。將恰好轉至少.
令f (i
)f(i)
f(i)
為恰好有i
ii項相鄰的排列,g(i
)g(i)
g(i)
為至少有i
ii項相鄰的排列.cnt
cntcn
t為有兩個的顏色個數.
f (0
)=∑i
=0cn
t(−1
)i∗g
(i
)f(0)=\sum_^(-1)^i*g(i)
f(0)=∑
i=0c
nt(
−1)i
∗g(i
).g (i
)g(i)
g(i)
就比較好求了:g(i
)=(i
cnt)
∗(n−
i)!∗
12cn
t−
ig(i)=(^_)*(n-i)!*\frac}
g(i)=(
icnt
)∗(
n−i)
!∗2c
nt−i
1解釋:1.至少i
ii個相鄰,那麼就得先確定哪i
ii個顏色相鄰.所以(ic
nt
)(^_)
(icnt
).2.然後問題轉化為:總共n
nn個小球。有i
ii對個顏色不同的物品兩兩**在一起,其他位置都是不同顏色的物品,求他們的全排列.根據一一對映的原理,方案數為(n−
i)
!(n-i)!
(n−i)!
.3.但是剩下的這n−i
n-in−
i個物品中實際上還是有cnt
−i
cnt - i
cnt−
i對小球是顏色相同的,根據可重複排列的原理,我們還需要把重複的部分除掉。即12c
nt−i
\frac}
2cnt−i
1.最後,這題還卡常。我們需要對階乘o(n
)o(n)
o(n)
的求解逆元.
e.思維+sosdp
題目大意:
給你只含2
x2^x
2x的序列.你可以反轉任意子區間。問你最大子段和,使得裡面沒有重複的數,
題目思路:
重點:將任意乙個子區間反轉意味著能夠將兩個子區間拼在一起
2.由於要求了乙個區間不能有重複的數,那麼合法的區間數不超過nlo
gn
nlogn
nlog
n.直接預處理出來。
那麼接下來,我們就是列舉每乙個區間,每個區間可以被表示成乙個二進位制數,
那麼將每乙個合法區間寫下來生成乙個新的序列b
ib_i
bi.問題轉化為:
列舉b
ib_i
bi,快速找b
jb_j
bj滿足bi&
bj=0
b_i\&b_j=0
bi&bj
=0,並且bi∣
bj
b_i|b_j
bi∣bj
最大.一眼sos
dp
sosdp
sosdp,
b i&
bj=0
b_i\&b_j=0
bi&bj
=0代表它們沒有交集。代表b
jb_j
bj是(s−
bi
)(s-b_i)
(s−bi
)的子集。所以dp(
mask
)dp(mask)
dp(mas
k)代表的是子集的最大值.乙個字首最大值轉移完事.
為什麼直接找最大值可行。因為當bi&
bj=0
b_i\&b_j=0
bi&bj
=0時,bi∣
bj
b_i|b_j
bi∣bj
等價於bi+
bj
b_i+b_j
bi+bj
。所以直接找b
ib_i
bi最大就好.
牛客練習賽78 補題
b cca的搬運 注意陣列的頭和尾在實際模擬時的情形 include using namespace std const int maxn 1e5 5 int a maxn dp maxn n,m,x1,up maxn ans,sum,vis maxn d,b maxn k,t intmain fo...
牛客練習賽9
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...
牛客練習賽15
時間限制 c c 2秒,其他語言4秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 第一次期中考終於結束啦!沃老師是個語文老師,他在評學生的作文成績時,給每位學生的分數都是乙個小於10的非負小數。amy 8.99999999999999999999...