計蒜客T2237 魔法 樹

2022-05-01 20:12:11 字數 1209 閱讀 6437

題目大意

資料範圍

題解

這個題挺好玩的

可以用反證法,發現所有葉子必須都得選而且所有葉子都選了合法。

故此我們就是要使得,一次操作之後使得葉子的個數最少。

這怎麼弄呢?

我們發現,如果一條邊相連的兩個點$x$和$y$($d_i$表示點$i$的度數,不妨設$d_x\le d_y$)滿足:

$d_y\ge 3$且$d_x\ge 3$,那麼葉子可以$-=2$。

如果$d_y\ge 3$且$d_x\le 2$,那麼葉子可以$-=1$。

列舉每條邊,看看最多能$-1$還是$-2$就好了~

**

#include #define n 200010 

using namespace std;

int head[n], to[n << 1], nxt[n << 1], tot;

char *p1, *p2, buf[100000];

#define nc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? eof : *p1 ++ )

int rd()

while (c > 47)

return x * f;

}inline void add(int x, int y)

int d[n], x[n], y[n];

int main()

int mx = 0;

for (int i = 2; i <= n; i ++ )

else if(s2 <= 2)

} }int sum = 0;

for (int i = 1; i <= n; i ++ )

} mx *= k;

cout << sum - mx << endl ;

return 0;

}

小結:有意思的題~

計蒜客t36352 魔法

肯定我要佔滿所有的葉子結點,否則以乙個葉子節點建樹的時候你選的所有點就都在一棵子樹裡,也就不符合要求。反過來,選擇了所有葉子節點,可以證明它是可行的,所以葉子節點構成的集合滿足要求而且最小。如果k 0 k 0k 0直接求出度為1 11的點的數目就好了 如果k 1 k 1k 1,列舉刪哪條邊,我用 x...

計蒜客 T1551 魔法少女

前些時間虛淵玄的鉅獻小圓著實火了一把。在黑長直 小炎 往上爬樓去對抗魔女之夜時,她遇到了乙個問題想請你幫忙。因為魔女之夜是懸浮在半空的,所以她必須要爬樓,而那座廢墟一共有 nn 層,而且每層高度不同,這造成小炎爬每層的時間也不同。不過當然,小炎會時間魔法,可以瞬間飛過一層或者兩層 即不耗時 但每次瞬...

紅與黑 計蒜客 T1211

題目鏈結 典型的深搜題,基礎題。蒜廠有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入格式第一行是兩個整數 w和 h,分別表示 x 方向和 y 方向瓷磚的數量。w 和 h 都不超過 ...