給定一張 \(n\) 個點 \(m\) 條邊的無向圖,每條邊連線兩個頂點,保證無重邊自環,不保證連通。
你想在這張圖上進行若干次旅遊,每次旅遊可以任選乙個點 \(x\) 作為起點,再走到乙個與 \(x\) 直接有邊相連的點 \(y\),再走到乙個與 \(y\) 直接有邊相連的點 \(z\) 並結束本次旅遊。
作為乙個旅遊愛好者,你不希望經過任意一條邊超過一次,注意一條邊不能即正向走一次又反向走一次,注意點可以經過多次,在滿足此條件下,你希望進行盡可能多次的旅遊,請計算出最多能進行的旅遊次數並輸出任意一種方案。
第 \(1\) 行兩個正整數 \(n\) 與 \(m\),表示全圖的點數與邊數
下接 \(m\) 行,每行兩個數字 \(u\) 與 \(v\) 表示一條邊
第 \(1\) 行乙個整數 \(cnt\) 表示答案
下接 \(cnt\) 行,每行三個數字 \(x, y\) 與 \(z\),表示一次旅遊的路線
如有多種旅行方案,任意輸出一種即可
對於前 \(20\%\) 的資料, \(n \le10, m \le 20\).
對於另 \(20\%\) 的資料, \(m = n - 1\),並且圖連通
對於另 \(10\%\) 的資料,每個點的度數不超過 \(2\)
對於 \(100\%\) 的資料, \(n \le 100000, m \le 200000\)
可能還是沒怎麼做過構造題目吧,我打的樹的特殊資料分其實改一改就是正解了。
通過手玩我們發現對乙個有\(m\)條邊的連通塊來說,方案數量一定可以構造到\(\lfloor\frac\rfloor\)個。
構造方法如下
對某個連通塊隨便選擇乙個點構造一顆搜尋樹,在回溯的時候配對可以連線的邊,如果不能兩兩配對,那麼用上自己頭上的邊。
考慮為什麼這樣是對的,思路很簡單。我們發現除了選定根的某個兒子邊,所有的邊都可以用上,不會產生浪費。
code:
#include #include #define rep(i,a,b) for(int i=a;i<=b;i++)
#define rep(i,a,b) for(int i=a;ich;
ed()
ed()
}rep(i,0,ch.size())
if(ch.size()&1)
}int main()
return 0;
}
2018.10.25 解題報告 CF622F
懶得碼字了 很簡單的數論題,紫題顯然是過了些,不要說.對於這個式子,是乙個 k 1 次的多項式,插 k 2 次值就好了,煩人的是處理逆元,我的費馬小定理顯然是 o logp 的,可以用拓歐,聽說還有 o k 的演算法,我似乎感覺不太可能 我太弱了 預處理處階乘,前 字尾積陣列即可,複雜度 o klo...
CF1475F 異常矩陣
原題鏈結 有兩個 0 1 矩陣 a,b,存在兩種操作 1 選擇一列,將這列的元素 xor 1。2 選擇一行,將這行的元素 xor 1。判斷是否存在操作使得矩陣 a 能轉化為矩陣 b。由異或的性質,我們可以得到兩點結論。1 操作的順序不影響結果。2 操作最多只能進行一次。根據這兩點,我們可以根據第一行...
CF 589F 網路流(or貪心 )
題意 有 盆菜,每個菜的上菜時間是ai bi,要求每盆菜的品嚐時間都相同,求最大的品嚐時間。思路 一開始也想到了網路流,但是沒有想到壓縮區域。我只想到乙個點乙個點地建圖,這個的圖點可能有10 4個啊。肯定不能用網路流 後來請教別人可以乙個區間建圖,流量就是區間長度,這個的話點最多300 個。網路流妥...