題意:兩種操作:(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優解,一開始不知道怎麼轉移,原...