勤奮又善於思考的小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:複製
3輸出樣例#1:複製2 2 2
1 01 1
220 % :n <= 10 , ai <= 100.
40 % :n <= 100 , ai <= 200
60 % :n <= 2000 .
100 % :n <= 10 ^ 5 , ai < 2 ^ 31.
題意:給一顆點權二叉樹,問最少修改幾個點的值變成一棵的二叉搜尋樹。
思路:先中序遍歷得到序列,題意變成修改最少點使該序列變成嚴格上公升序列,嚴格上公升不好做,那麼先讓他們減去自己的下標就變成求非遞減序列了,總長減去lis就是答案。
# include using namespace std;
typedef long long ll;
const int maxn = 1e5+30;
int g[maxn][2], a[maxn], b[maxn], c[maxn], cnt;
void dfs(int u)
int main()
dfs(1);
int ans = 0;
cnt = 0;
for(int i=1; i<=n; ++i)
}printf("%d\n",n-ans);
return 0;
}
洛谷 P3365 改造二叉樹
勤奮又善於思考的小l接觸了資訊學競賽,開始的學習十分順利。但是,小l對資料結構的掌握實在十分渣渣。所以,小l當時卡在了二叉樹。這一定難不倒聰明的你吧!如果你能幫小l解決這個問題,也許他會把最後的資產分給你1 16哦!輸入格式 第一行乙個正整數n表示二叉樹節點數。第二行n個正整數用空格分隔開,第i個數...
改造二叉樹
description 小y在學樹論時看到了有關二叉樹的介紹 在電腦科學中,二叉樹是每個結點最多有兩個子結點的有序樹。通常子結點被稱作 左孩子 和 右孩子 二叉樹被用作二叉搜尋樹和二叉堆。隨後他又和他人討論起了二叉搜尋樹。什麼是二叉搜尋樹呢?二叉搜尋樹首先是一棵二叉樹。設key p 表示結點p上的數...
改造二叉樹
題目描述 小y在學樹論時看到了有關二叉樹的介紹 在電腦科學中,二叉樹是每個結點最多有兩個子結點的有序樹。通常子結點被稱作 左孩子 和 右孩子 二叉樹被用作二叉搜尋樹和二叉堆。隨後他又和他人討論起了二叉搜尋樹。什麼是二叉搜尋樹呢?二叉搜尋樹首先是一棵二叉樹。設key p 表示結點p上的數值。對於其中的...