勤奮又善於思考的小l接觸了資訊學競賽,開始的學習十分順利。但是,小l對資料結構的掌握實在十分渣渣。
所以,小l當時卡在了二叉樹。
這一定難不倒聰明的你吧!如果你能幫小l解決這個問題,也許他會把最後的資產分給你1/16哦!
輸入格式:
第一行乙個正整數n表示二叉樹節點數。
第二行n個正整數用空格分隔開,第i個數ai表示結點i的原始數值。
此後n - 1行每行兩個非負整數fa, ch,第i + 2行描述結點i + 1的父親編號fa,以及父子關係ch,(ch = 0 表示i + 1為左兒子,ch = 1表示i + 1為右兒子)。
為了讓你稍微減輕些負擔,小l規定:結點1一定是二叉樹的根哦!
輸出格式:
僅一行包含乙個整數,表示最少的修改次數
輸入樣例#1:
32 2 2
1 01 1
輸出樣例#1:
2
20 % :n <= 10 , ai <= 100.
40 % :n <= 100 , ai <= 200
60 % :n <= 2000 .
100 % :n <= 10 ^ 5 , ai < 2 ^ 31.
沒想出來,參考幾年前一道模擬題
左中右,不就是中序遍歷嘛
求一下中序遍歷,再在這上面求lis,n-lis不就是答案嘛
但是有乙個問題,2,1,3,這樣的不能一次得到答案,因為必須嚴格單增
所以又用到了a[i]-i變為不嚴格單增
//////
created by candy on 9/17/16.
////
#include
#include
#include
#include
using
namespace
std;
const
int n=1e5+5,inf=2147483647
;int
read()
while(c>='
0'&&c<='9')
return x*f;
}int
n,a[n],fa,ch;
struct
nodet[n];
int cnt=0
;void inorder(int
u)int g[n],d[n],ans=0
;void
lis()
}int main(int argc, const
char *ar**)
inorder(1);
//for(int i=1;i<=n;i++) printf("%d ",a[i]);
lis();
printf("%d
",n-ans);
return0;
}
洛谷月賽 U4727 小L 的二叉樹
題目背景 勤奮又善於思考的小l接觸了資訊學競賽,開始的學習十分順利。但是,小l對資料結構的掌握實在十分渣渣。所以,小l當時卡在了二叉樹。題目描述 在電腦科學中,二叉樹是每個結點最多有兩個子結點的有序樹。通常子結點被稱作 左孩子 和 右孩子 二叉樹被用作二叉搜尋樹和二叉堆。隨後他又和他人討論起了二叉搜...
小L的二叉樹
題目背景 勤奮又善於思考的小l接觸了資訊學競賽,開始的學習十分順利。但是,小l對資料結構的掌握實在十分渣渣。所以,小l當時卡在了二叉樹。題目描述 在電腦科學中,二叉樹是每個結點最多有兩個子結點的有序樹。通常子結點被稱作 左孩子 和 右孩子 二叉樹被用作二叉搜尋樹和二叉堆。隨後他又和他人討論起了二叉搜...
洛谷 新二叉樹(P1305,二叉樹)
輸入一串二叉樹,輸出其前序遍歷。輸入格式 第一行為二叉樹的節點數 n。1 n 26 後面 n 行,每乙個字母為節點,後兩個字母分別為其左右兒子。空節點用 表示 輸出格式 二叉樹的前序遍歷。輸入輸出樣例輸入6 abcbdi cj d i j 輸出abdicj include using namespa...