P4096 HEOI2013 Eden的博弈樹

2021-10-25 01:57:45 字數 1219 閱讀 7845

乙個博弈樹,黑方先手。定義乙個最小的葉子節點集為黑胜狀態為黑方勝利集合,白色亦然。求所有既屬於黑方勝利集合有屬於白方勝利集合的點。

設f i,

0/1f_

fi,0/1

​表示i

ii子樹中的最小黑髮/白方勝利集和,然後可以根據這個求出所有的勝利集合點。

時間複雜度o(n

)o(n)

o(n)

#include

#include

#include

using

namespace std;

const

int n=

2e5+10;

struct nodea[n]

;int n,tot,ls[n]

,f[n][2

];bool con[n][2

];void

addl

(int x,

int y)

void

dfs(

int x,

int j,

int k)

if(j!=k)f[x]

[k]=

2147483647

;for

(int i=ls[x]

;i;i=a[i]

.next)

return;}

void

solve

(int x,

int j,

int k)

return;}

intmain()

dfs(1,

0,0)

;dfs(1

,0,1

);solve(1

,0,0

);solve(1

,0,1

);int ans1=

2147483647

,ans2=

0,ans3=0;

for(

int i=

1;i<=n;i++)if

(con[i][1

]&&con[i][0

])ans1=

(ans1<

2147483647

)?ans1:i,ans2++

,ans3^

=i;printf

("%d %d %d\n"

,ans1,ans2,ans3)

;}

P4107 HEOI2015 兔子與櫻花 貪心

傳送門 一道貪心題 首先我們可以證明最優的貢獻一定是從下依次合併到上的 不會出現乙個節點不能合併到父親節點,卻能合併到父親節點的祖先節點的情況 我們設當前的節點為 u u 的父親節點為 v v 的父親節點是 fa 如果 u 不能合併到 v 上,那麼必定有 c u son u 1 c v son v ...

P4111 HEOI2015 小Z的房間

你的房子可以看做是乙個包含n m個格仔的格狀矩形,每個格仔是乙個房間或者是乙個柱子。在一開始的時候,相鄰的格仔之間都有牆隔著。你想要打通一些相鄰房間的牆,使得所有房間能夠互相到達。在此過程中,你不能把房子給打穿,或者打通柱子 以及柱子旁邊的牆 同時,你不希望在房子中有小偷的時候會很難抓,所以你希望任...

P4111 HEOI2015 小Z的房間

傳送門 轉換題意後就是問你生成樹的方案數 就是裸的矩陣樹定理 不會證明,只懂結論 對於乙個無向圖 g 定義g的度數矩陣 d g 是乙個 n n 的矩陣,並且滿足 當 i j 時,d i j 0,當 i j 時,d i j 等於 vi 的度數 定義g的鄰接矩陣 a g 是乙個 n n 的矩陣,並且滿足...