HDU Wind 離散化 線段樹

2021-09-06 05:48:08 字數 1137 閱讀 5983

題意為給定了n棵樹,m個蘑菇,一陣風颳來,求期望的倖存的蘑菇的權值。

我們可以轉化為求每乙個蘑菇仔這一陣風過後的期望權值,然後再把所有的蘑菇的權值相加即可。所以我們對於每一棵樹進行一次更新,在其安全區域進行更新,這個用線段樹來解決,然後再詢問一次蘑菇所在地方的安全係數就可以了。

**如下:

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int n, m, h[350000

], idx;

struct

tree

t[100005

];struct

mogu

m[10005

];struct

node

e[2000005

];int bsearch(int l, int r, int

val)

}void build(int p, int l, intr)}

void push_down(int

p)void modify(int p, int l, int r, double

pro)

else

}}double query(int p, int

pos)

else

}int

main( )

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

sort(h, h+idx+1

); idx = unique(h, h+idx+1)-h;

build(

1, 0, idx-1

);

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

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

printf(

"%.4lf\n

", ret);

}return0;

}

離散化 線段樹

題目 分析 每次1操作會往序列底加first個second,first 和 second 都是最大1e9的資料,每次2操作詢問序列中第first到第second個數的和 一開始就感覺有點像線段樹,輸入資料太大我們可以離線處理把資料離散化下,然後扔到線段樹上,維護兩個陣列 sum 區間數的值的和 nu...

資料離散化 線段樹

前言 遇到了乙個矩形面積堆疊的問題,想了很久。終於找到了方法。先做個小記,待到具體問題時再分析。資料離散化 高大上的名字,其實就是對資料的一種處理,也可以採取陣列 或者 容器 map vector。之類的來儲存。之前的ibm技術俱樂部主席競選 那道題其實就是很好的應用。有些資料本身很大,自身無法作為...

紙帶 線段樹 離散化

題目大意 每次給一段區間染色,求最後整個區間有多少種顏色 分析 用膝蓋想也知道這題線段樹可以輕鬆水過,於是出題人靈機一動,挖了個深坑,每次給的區間是左開右閉的,但題目沒說,他給了你一張圖,你們可以感受一下 於是正解wa成0分我也是很絕望的。有一點要注意一下,離散化後有些區間會並在一起,原來中間的顏色...