bzoj2131 免費的餡餅

2021-08-29 23:49:52 字數 1004 閱讀 4120

智障一般的操作,拆絕對值都忘了。數學沒救了。

最後貌似是用的幾何意義推出來的。轉移的條件是 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的直線平移到這個點然後劃分的四個區域的左邊。

我們考慮將座標系旋轉45° 並且將新的橫縱座標乘上 根號2 然後 ( x , y ) 對應的新的座標就是  ( x - y , x + y )。然後可以轉移的範圍就是座標系左下的矩陣,按x軸排序更新答案,用樹狀陣列或者線段樹維護即可

#includeusing namespace std;

const int n=1e5+5;

int w,n,cnt;

struct nodend[n];

inline void remark()

bool cmpy(const node a,const node b)

bool cmpx(const node a,const node b)

int f[n];

#define lowbit(x) ((x)&(-x))

int t[n];

inline void update(int pos,int sum)

inline int qry(int pos)

int main()

remark();

sort(nd+1,nd+n+1,cmpy);

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

sort(nd+1,nd+n+1,cmpx);

int ans=0;

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

printf("%d\n",ans);

}

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 這樣的話我只會樹套樹 後來想想帶修主席樹應該也行?信仰不夠去 題...

bzoj 2131 免費的餡餅

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