線段樹,大力分類討論訪問到節點是因為定位到節點自身還是因為定位子樹內節點。
發現是個與ql,
qr
ql,qr
ql,q
r有關的二元二次函式,維護子樹內部的和,沒了。
分類討論的相關細節這裡不再講解。
**:
#include
#define ll long long
#define re register
#define cs const
namespace io
template
<
typename t>t get()
inline
intgi()
}using
namespace io;
using std::cerr;
using std::cout;
//x , y : ql , qr
struct poly_xy
double
*operator
(int o)
cs double
*operator
(int o)cs
void
operator+=
(cs poly_xy &b)
double
calc
(ll x,ll y)cs};
cs int n=
5e5+7;
poly_xy t[n<<2|
7];void
init_leaf
(int u,
int i)
void
init_node
(int u,ll l,ll r)
#define lc u<<1
#define rc u<<1|1
void
build
(int u,
int l,
int r)
double
query
(int u,
int l,
int r,
int ql,
int qr)
int mid=l+r>>1;
double ans=0;
if(ql<=mid)ans+
=query
(lc,l,mid,ql,qr);if
(mid=query
(rc,mid+
1,r,ql,qr)
;int inter=std::
min(qr,r)
-std::
max(l,ql)+1
;int out=qr-ql+
1-inter;
return ans+
(ll)inter*out+
(ll)inter*
(inter+1)
/2;}
#undef lc
#undef rc
int n,q,op;
void
work()
}#undef zxyoi
void
file()
signed
main()
校內模擬 鎖
沒有標籤是因為我真的不知道這算什麼型別 這題我說不來大意你們還是看題面描述吧 小z住的房子一共有n個人,他們每人有乙個重要度。房子的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複製若干份並發給任意多個居民。每個人都可以持有若干鑰匙,可以不持有鑰匙...
校內模擬 assignment(DP)
題面見校內oj4693 考慮預處理f k i j f k i j f k i j 表示最長的一段不超過k kk的時候,將長度為i ii的序列分為j jj段的方案數。在k kk相同的狀態之間轉移,顯然有f i j f i 1 j f i 1 j 1 f i k 1 j 1 f i j f i 1 j ...
2019 10 03 校內模擬
內網傳送門 很明顯的乙個網路流。轉換一下題意,相當於求保留航線的最大值。所以我們把邊權取負跑最小費用流。有乙個坑點,就是我們只需要費用最小,不要求流量最大,所以不應該用最小費用最大流。有兩個解決辦法 用最小費用可行流。連 i,t,1,0 i,t,1,0 i,t,1 0 的邊,表示不選 i ii 連出...