bzoj 1864 Zjoi2006 三色二叉樹

2021-08-20 19:04:25 字數 768 閱讀 9371

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不是綠色,那麼根據抽屜原理,它的兩個兒子一定是乙個綠色,乙個不是綠色。...