description
input
僅有一行,不超過500000個字元,表示乙個二叉樹序列。
output
輸出檔案也只有一行,包含兩個數,依次表示最多和最少有多少個點能夠被染成綠色。
sample input
1122002010
sample output
5 2
hint
source
day1
設dp[x][0/1]分別表示 該點是否被 染色成綠色的最多的點
dp[x][0]=max(dp[c[x][0]][1]+dp[c[x][1]][0],dp[c[x][0]][0]+dp[c[x][1]][1])
dp[x][1]=dp[c[x][0]][0]+dp[c[x][1]][0]
#include
#include
#include
#include
using
namespace
std;
const
int n=500050;
int dp[n][2],c[n][2],n,p;char s[n];
inline
void dfs_init()
if (s[x]=='1')
}inline
void dfs(int x)
inline
void dfs1(int x)
int main()
bzoj1864 Zjoi2006 三色二叉樹
傳送門 大力建出樹後大力dp 設f i j 表示以i為根節點,根節點顏色為j是的最優解。每次列舉當前結點節點顏色和兒子顏色,時間複雜度o n 27 uses math var a,b array 0.500005,1.3 of longint c array 0.500005 of longint ...
BZOJ1864 Zjoi2006 三色二叉樹
標籤 樹形dp description input 僅有一行,不超過500000個字元,表示乙個二叉樹序列。output 輸出檔案也只有一行,包含兩個數,依次表示最多和最少有多少個點能夠被染成綠色。sample input 1122002010 sample output 5 2題意 給定一棵二叉樹...
BZOJ1864 Zjoi2006 三色二叉樹
僅有一行,不超過500000個字元,表示乙個二叉樹序列。輸出檔案也只有一行,包含兩個數,依次表示最多和最少有多少個點能夠被染成綠色。1122002010 5 2仔細考慮我們發現,乙個節點的顏色只有是綠色和不是綠色兩種。如果乙個點x不是綠色,那麼根據抽屜原理,它的兩個兒子一定是乙個綠色,乙個不是綠色。...