*一定要注意題目中的「連續」,即只需要記錄子樹中的三個要素:最小值min、最大值max和節點個數size;
*做個dfs遍歷一遍樹,每棵樹的節點size等於本身1+全部子樹的size,max、min也是本身與全部子樹的max、min比較;
#include #include #include #include #include #define maxn 100010
using namespace std;
int size[maxn]=,min[maxn],max[maxn];
int ans=0;
vector v[maxn];
void dfs(int rt)
if(max[rt]-min[rt]+1==size[rt])++ans;
}int main()
for(int i=1;i<=n;++i)
if(size[i]==0)
printf("%d\n",ans);
return 0;
}
牛客練習賽6 D 世界上最可愛的珂朵莉
時間限制 c c 1秒,其他語言2秒 空間限制 c c 65536k,其他語言131072k 64bit io format lld 我永遠喜歡珂朵莉 有兩個長為n的序列a i 與b i 你可以把任意不多於x個a序列中的數變成y 你可以把所有序列b中的數減去乙個非負數t 你可以把a序列和b序列分別任...
牛客練習賽63 B牛牛的魚缸
題目描述 牛牛有乙個長為l,寬為1,高為h的魚缸,現在他想要在魚缸中盛一些水。他想要知道這個魚缸最多能夠放多少水。當然這個問題太過於簡單,所以牛牛將這個魚缸放到了乙個長為l,高為h的斜坡上面,如圖所示,魚缸寬度為1的這條邊緊緊靠在斜坡與地面的交界線上。在不允許移動魚缸與斜坡的情況下。魚缸最多能夠放多...
牛客練習賽14 B 區間的連續段 ST表 倍增
分析 剛開始以為預處理 並查集呢?怎麼也沒想通,看了題解理解了一會。由於k和n都很大,預處理最大時間nlg,查詢最大時間lgn。lg級別的查詢,線段樹?怎麼查呢。倍增是個好東西,倍增 st表,有點區間dp的意思。首先你應該知道什麼是倍增?什麼是st表?其次怎樣狀態轉移的?倍增法 7 2 2 2 1 ...