ZJCOJ qwb和李主席(DFS 思維)

2021-08-01 23:46:02 字數 968 閱讀 8862

time limit: 4 sec  

memory limit: 128 mb

submit: 360  

solved: 34 [

submit][

status][

web board]

qwb和李主席打算平分一堆寶藏,他們想確保分配公平,可惜他們都太懶了,你能幫助他們嘛?

輸入包含多組測試資料,處理到檔案結束。

每組測試資料的第一行是乙個正整數n

(0 <= n <=36 )表示物品的總個數.。

接下來輸入n個浮點數(最多精確到分),表示每個物品的價值v(0

對於每組測試資料,輸出能夠使qwb和李主席各自所得到的物品的總價值之差的最小值(精確到分),每組測試資料輸出佔一行。

3 0.01 0.1 1

2 1 1

0.89

0.00

思路:36件物品,直接dfs所有組合肯定超時,考慮折半搜尋,前半和後半分別dfs構造兩個集合a和b,結果無非三種,一人全部在a中取,一人全部在b中取,兩人都在a和b中取,對於前兩種情況很好處理,第三種情況用貪心。**參考:maple。

# include using namespace std;

typedef long long ll;

const ll inf = 1e18;

double sum, ans, a[38], b[1<<19], c[1<<19];

void dfs(int p, double s, int e, int &cnt, double arr)

dfs(p+1, s+a[p], e, cnt, arr);

dfs(p+1, s, e, cnt, arr);

}int main()

printf("%.2f\n",ans);

}return 0;

}

bzoj 1803(DFS序 主席樹)

傳送門 題解 按dfs序下標建主席樹,然後就不用說什麼了吧。注意 如果詢問 插入的 l,r 是 0,1e9 的話,就需要多開陣列 maxn 32 而且效率不太高,所以建議先離散化,這樣就可以在 0,maxn 的範圍內詢問 插入,而且時間可以縮短10 左右。include using namespac...

qwb與李主席 狀壓 二分

description qwb和李主席打算平分一堆寶藏,他們想確保分配公平,可惜他們都太懶了,你能幫助他們嘛?input 輸入包含多組測試資料,處理到檔案結束。每組測試資料的第一行是乙個正整數n 0 n 36 表示物品的總個數.接下來輸入n個浮點數 最多精確到分 表示每個物品的價值v 0 v 1e9...

bzoj4771 dfs序 倍增 主席樹

先考慮沒有深度限制的情況。先將每個節點的權值設為1,對於顏色相同且在dfs序中最近的2個點,用倍增求出lca並將它的權值減一。然後子樹中不同的顏色種數就是子樹的權值和了。有深度限制時,考慮以深度為時間建立主席樹。將每個點按深度排序,列舉一遍。對每種顏色開乙個set,列舉到乙個點時將它在dfs序中的位...