題目:
輸入一棵樹,求樹上所有兩點之間路徑或之和。
權神設計出來是用並查集做的。
然而第一反應就是向上合併維護二進位制位。寫了一發維護1的個數愉快的wa了,之後就忘了有這題了。最近這題被大師兄秒掉了,被教育了一手可以先當成整棵樹全是1來做,然後再合併0的個數,減掉0的情況。
瞬間好寫了很多。。。。
我們把子樹0的個數向上合併的時候,檢查一下父節點這一位是否是0,如果是0才合併,因為父節點是所以子節點的必經之路,如果父節點是1,那麼子節點經過父節點往上或出來這一位就是1了。
ac**:
#include
using namespace std;
const
int maxn =
1e5+5;
typedef
long
long ll;
ll ans;
int n, val[maxn]
;int p[20]
, sz[maxn][20
];vector<
int> g[maxn]
;void
crack
(int x)
}void
dfs(
int x,
int fa)
dfs(v, x)
;for
(int i =
0; i <20;
++i)}}
}int
main()
int u, v;
for(
int i =
1; i < n;
++i)
p[0]
=1;for
(int i =
1; i <20;
++i)
for(
int i =
0; i <20;
++i)
dfs(1,
0); cout << ans;
return0;
}
LPOJ 開發教程(九)實用工具
lpoj www.lpoj.cn lpoj文件 docs.lpoj.cn 在管理員頁面設定好爬蟲資訊後,可以啟動爬蟲機械人進行爬蟲。主要可以爬取的資訊是 各oj做題數,部落格,和近期比賽列表 python main.pymain.py 這個資料夾中,包含了各種實用的工具!此指令碼基於sim工具查重 ...
leetcode 557反轉字串
給定乙個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。示例 1 輸入 let s take leetcode contest 輸出 s tel ekat edocteel tsetnoc 注意 在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。方法一 因為...
紫書 習題 10 12 UVa 557(概率計算)
開始的時候我沒有考慮1 2的概率,直接一波組合數,然後wa 後來去看題解發現我們可以反過來想,求最後兩個人不一樣的情況 這個時候肯定會拋到最後的 所以每一種可能就是 0.5 n 2 然後一共有c n 2,n 2 1 種 乘起來就ok了。但是這樣會超時而且結果太大 所以我們可以嘗試遞推 通過計算可以發...