bzoj2131 免費的餡餅 dp 樹狀陣列

2022-05-31 05:48:15 字數 852 閱讀 5155

題解:

昨天好像做了個幾乎一模一樣的題目

按照ti排序 |p[i]-p[j]|<=2*(t[i]-t[j])

然後去絕對值變為三維偏序

發現後兩個式子可以推出ti

所以就變成二維偏序 按照乙個排序套線段樹就可以了

**非常好寫

**:

#include using

namespace

std;

#define rint register ll

#define il inline

#define rep(i,h,t) for (rint i=h;i<=t;i++)

#define dep(i,t,h) for (rint i=t;i>=h;i--)

#define ll long long

#define mid ((h+t)>>1)

const ll n=2e5;

const ll n2=6e6;

const ll inf=1e9;

struct

rea[n];

bool

cmp(re x,re y)

ll cnt;

struct

sgt ll find(ll x,ll h,ll t,ll h1,ll t1)

}s;intmain()

sort(a+1,a+n+1

,cmp);

ll ans=0

; ll rt=0

; rep(i,

1,n)

cout

return0;

}

bzoj2131 免費的餡餅

智障一般的操作,拆絕對值都忘了。數學沒救了。最後貌似是用的幾何意義推出來的。轉移的條件是 t i t j 並且abs p i p j 2 t i t j 顯然前面那個可以不考慮。然後你把每個狀態看作乙個二維平面上的點nd i 2 t i p i 移向不難發現 nd i 能夠轉移的點就是y x,y x...

bzoj 2131 免費的餡餅

易得方程 f i max f j v i 條件是 t i 一共有 3 個條件,但是你發現如果滿足後面兩個條件,自然滿足第乙個條件.所以可以將問題轉化為乙個二位偏序問題,離線 樹狀陣列處理一下即可.code include define n 100007 define ll long long usi...

bzoj2131 免費的餡餅

首先我們很容易看出是乙個dp 然後容易看出是資料結構優化dp 但是這個限制條件有點鬼畜 abs p i p j 2 t i t j p i p j t i 2 p i t j 2 p j p i t i 2 p i t j 2 p j 這樣的話我只會樹套樹 後來想想帶修主席樹應該也行?信仰不夠去 題...