牛客练习赛 62
A.牛妹的游戲
Ramsey定理:人話解釋任意六個(gè)人中要么至少三個(gè)人認(rèn)識(shí),要么至少三個(gè)不認(rèn)識(shí)。
結(jié)論簡要證明:
假設(shè) 666 個(gè)據(jù)點(diǎn)分別為 A,B,C,D,E,FA,B,C,D,E,FA,B,C,D,E,F那么在 A 連向其它據(jù)點(diǎn)的控制鏈中,必然至少有 333條鏈被同一方控制,不妨假設(shè)它們?yōu)?AB,AC,ADAB,AC,ADAB,AC,AD。如此一來只要 BC,BD,CDBC,BD,CDBC,BD,CD 中有任意一條鏈也被這一方控制,則可以形成控制區(qū)域;如果這三條鏈都沒有被這一方控制,也就意味著它們都被對方控制了,則它們同樣可以形成控制區(qū)域。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<cstring> #include<iostream> #include<algorithm> using namespace std; typedef pair<int,int> pii; typedef long long ll; const int N=500010; int n,m; int e[10][10]; int main() {IO;int T=1;cin>>T;while(T--){cin>>n>>m;memset(e,0,sizeof e);if(n>5){for(int i=1;i<=m;i++){int a,b;cin>>a>>b;}cout<<"yes\n";continue;}for(int i=1;i<=m;i++){int a,b;cin>>a>>b;e[a][b]=e[b][a]=1;}bool ok=0;for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)for(int k=j+1;k<=n;k++)if(e[i][j]&&e[j][k]&&e[k][i]||!e[i][j]&&!e[j][k]&&!e[k][i])ok=1;if(ok) cout<<"yes\n";else cout<<"no\n";}return 0; }B.病毒擴(kuò)散
打表找規(guī)律,楊輝三角。
第四秒后擴(kuò)張現(xiàn)象如下圖
[1×14×16×14×11×14×16×24×31×46×14×31×64×11×41×1]\begin{bmatrix} 1×1&4×1&6×1&4×1&1×1\\4×1&6×2&4×3&1×4\\6×1&4×3&1×6\\4×1&1×4\\1×1 \end{bmatrix}???????1×14×16×14×11×1?4×16×24×31×4?6×14×31×6?4×11×41×1???????
好像不是那么明顯,我們把乘號左邊和右邊的數(shù)分別拿出來
左邊:[146414641641411]左邊:\begin{bmatrix} 1&4&6&4&1\\4&6&4&1\\6&4&1\\4&1\\1 \end{bmatrix}左邊:???????14641?4641?641?411???????
右邊:[111111234136141]右邊:\begin{bmatrix} 1&1&1&1&1\\1&2&3&4\\1&3&6\\1&4\\1 \end{bmatrix}右邊:???????11111?1234?136?141???????
不難發(fā)現(xiàn)這兩個(gè)矩陣的這些數(shù)和組合數(shù)(楊輝三角)有關(guān)
考慮位置為(x,y)(x,y)(x,y)時(shí)間是ttt的情況下:
左邊的數(shù)Ctx+yC_{t}^{x+y}Ctx+y?,右邊的數(shù)Cx+yxC_{x+y}^xCx+yx?那么最終答案就是Ctx+y×Cx+yxC_{t}^{x+y}×C_{x+y}^xCtx+y?×Cx+yx?
預(yù)處理階乘和逆元即可O(1)O(1)O(1)得到每個(gè)位置的答案
我看不懂的官方證明轉(zhuǎn)化
C.牛牛染顏色
樹形dp
狀態(tài)表示:f(i,0/1)f_{(i,0/1)}f(i,0/1)?表示選擇/不選擇uuu 這個(gè)節(jié)點(diǎn)后以 uuu 為根的子樹的合法方案數(shù)。
狀態(tài)轉(zhuǎn)移:
若選擇 uuu 這個(gè)節(jié)點(diǎn),則子樹內(nèi)可以隨便選點(diǎn),每個(gè)子樹獨(dú)立乘法原理可得轉(zhuǎn)移f(i,1)=∏j∈sonf(j,0)+f(j,1)f_{(i,1)}=\prod_{j\in son} f_{(j,0)}+f_{(j,1)}f(i,1)?=∏j∈son?f(j,0)?+f(j,1)?
若不選擇uuu 這個(gè)節(jié)點(diǎn),則最多選擇某一個(gè)子樹,由加法原理可得轉(zhuǎn)移f(i,0)=1+∑j∈son(f(j,0)+f(j,1)?1)f_{(i,0)}=1+\sum_{j\in son}(f_{(j,0)}+f_{(j,1)}-1)f(i,0)?=1+∑j∈son?(f(j,0)?+f(j,1)??1)(? f(i,0)f_{(i,0)}f(i,0)?包含空集的方案,所以在枚舉子樹統(tǒng)計(jì)的時(shí)候每顆子樹貢獻(xiàn)的答案要減 111,但最后也要把空集的情況算上,還要加個(gè)111)
D. 牛牛的呱數(shù)
對于大數(shù),基本上都是取模達(dá)到我們想要的目的。
由此可以把原串取模后的答案記錄下來,并且記錄它的長度(邊權(quán)),和別的串相接的過程就類似從一個(gè)狀態(tài)到另一個(gè)狀態(tài),只需要預(yù)處理10k%p10^k\%p10k%p的結(jié)果跑最短路即可。
要加油哦~~
總結(jié)
- 上一篇: 痞子英雄演员表 痞子英雄介绍
- 下一篇: 电脑QQ突然不能用了怎么办