HDU 4666 Hyperspace(優先佇列)

2021-09-07 23:10:50 字數 1055 閱讀 4608

題意:兩種操作:(1)增加乙個點到序列中;(2)刪除序列中的某個點。在每次操作之後,輸出序列中曼哈頓距離最遠的兩個點之間的距離。點最大為5維。

思路:我們先看二維空間的點,設兩個點為(x1,y1),(x2,y2),那麼曼哈頓距離為|x1-x2|+|y1-y2|,現在我們去掉絕對值,那麼有四種情況:

(x1-x2)+(y1-y2)  (x2-x1)+(y1-y2)  (x1-x2)+(y2-y1) (x2-x1)+(y2-y1)

由於這四個式子中絕對值均小於等於|x1-x2|+|y1-y2|,而最大的等於|x1-x2|+|y1-y2|,因此我們只要求這四個式子的絕對值的最大值即可。這四個式子進一步變形得到:(x1+y1)-(x2+y2),(-x1+y1)-(-x2+y2),(x1-y1)-(x2-y2),(-x1-y1)-(-x2-y2)。也就是我們我們可以儲存四種情況的下每個點的最大值最小值,每種情況的最大最小值之差就是這種情況下的答案,四種情況下的最大值就是答案。

對於這道題,最大5維,也就是最多2^5種情況,用2^5*2(最大值最小值)個堆儲存即可。

struct node

void pushup(int t)

else break;}}

void pushdown(int t)

}void insert(int k,int id)

void del(int id)

int x=p[id];

a[x]=a[size];

q[x]=q[size--];

p[q[x]]=x;

pushup(x);

pushdown(x);

}int top()

};node a[32][2];

int n,m;

void insert(int p,int id)

a[i][0].insert(sum,id);

a[i][1].insert(-sum,id);}}

void del(int id)

}int query()

int main()

else 

pr(query());}}

}

HDU 2829 Lawrence dp 斜率優化

題意 一段直線上有n個點,每個點有乙隻價值,一條鐵路的價值等於每兩個點 可以直接或者間接相連,就是聯通路上是否有炸彈把路給炸了 積的和 思路 斜率優化 dp i j 為前i個點,炸j個線段能破壞的最大值 沒優化前的狀態轉移方程為dp i x max x 1 設計算點i時,j比k的值優,dp k x ...

hdu5976 Detachment 逆元 優化

傳送門 題意 給定乙個數x,我們可以把這個數分解成乙個乙個的小的數字a1,a2,a3 定義s a1 a2 a3 問如何分解x使得s最大,並且不能有重複的數字 思路 分解成數量多的小的數字,比分解成數量少的大的數字的乘積更大,這一點我不知道怎麼證明 並且由基本不等式我們可以知道,相等和的兩個數,越接近...

hdu2639 01揹包k優解)

沒怎麼理解題意,題意 有n件物品,揹包體積為v,給出一行價值和一行花費,求第k優解,每個物品只能取一次。思路 不考慮k優解,顯然是個簡單的01揹包,1維的陣列足夠表示。即便要求k優解,在k 30的條件下,此題再加1維也沒什麼好說的,用dp j k 表示揹包體積為j時的k優解,一開始不知道怎麼轉移,原...