UOJ 370 UR 17 滑稽樹上滑稽果

2022-05-27 21:18:20 字數 1017 閱讀 5444

$n \leq 1e5$個點,每個點有個權值$a_i \leq 2e5$。現將點連成樹,每個點$i$的鏈結代價為$a_i \ \ and \ \ i父親的代價$,這裡的$and$是二進位制按位與,求最小總代價。

日常被坑。。。

首先肯定是要把這些點連成一條鏈,盡量使得代價andand就and成0了。然後呢。。。

方法一:貪心,從小到大排。錯誤!

56499 113007 129845 126701 56282

一組錯誤資料。

方法二:這個想法還是可以有的,俗話說,貪心不成就dp。看一下那些二進位制位化成0的代價。

首先有些位上永遠是1,先把這些位提出來,其他位做乙個dp,$f(i)$表示集合$i$變成0的代價。

如果直接列舉$a_i$來轉移就傻了。。列舉$a_i$轉移不如去列舉$i$的子集,對每個狀態預處理出是否存在乙個數$a_j$,使得$i\ \ and \ \ a_j=0$.這樣在算$i$的答案時,我們就知道$i$的每個子集是否可以通過$and$某個數直接掛掉,然後剩下乙個補集,帶來乙個補集的代價。

1

//#include

2 #include3 #include4 #include5

//#include6//

#include7//

#include8//

#include

9 #include10 #include11

using

namespace

std;

1213

intn;

14#define maxn 262222

15int

a[maxn],f[maxn];

16bool

can[maxn];

17int

main()

1833

}34 printf("

%lld\n

",1ll*ss*n+f[tt]);

35return0;

36 }

view code

UOJ 192 UR 14 最強跳蚤

題目鏈結 暑期課第二天 樹上問題高階 具體內容看筆記部落格吧 題意n個節點的樹t 邊有邊權w 求滿足 u,v 上所有邊權乘積為完全平方數的路徑有多少條 看到 所有邊權乘積為完全平方數 想到完全平方數的特殊性 就是分解質因數後 質因數指數都為偶數 然後就想到分解邊權質因數 判質路徑邊權奇偶性 後者由於...

uoj 513 UR 19 清掃銀河

很簽到題 操作2先假設全部為黑,那麼變成了每選乙個點便會取反相連的邊 如果能暴力搞出所有環就可以高斯消元判斷,也許能過40 對原圖建dfs樹,發現只需要保留返祖邊加上對應路徑的環即可,任何的環都可以通過這些環異或得到,於是環的個數變為m級別,高斯消元o m 3 可以70 設返祖邊 u,v,w 的選擇...

UOJ 192 UR 14 最強跳蚤

這道題本來不想寫部落格的 但是鑑於自己犯了低階錯誤,還是寫篇部落格記載一下。一開始我的想法和題解裡面的演算法而比較類似,也是先分解質因數,然後用質因子是否出現偶數次來判斷當前這個數是否是完全平方數 然而這樣並不能ac,於是我去翻了題解 get 了乙個新做法,就是給每個出現過的質因子賦乙個 0,2 的...