模板斜率优化dp的常用模板

Posted zsben991126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板斜率优化dp的常用模板相关的知识,希望对你有一定的参考价值。

struct point{
    ll x,y;
    point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};}
    point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}
};
ll cross(point k1,point k2){return k1.x*k2.y-k1.y*k2.x;}
point q[N]; 
int head,tail;
void pop(ll k){
    while(tail>head && q[head+1].y-q[head].y<=k*(q[head+1].x-q[head].x))
        head++;
}
void push(point k1){
    while(tail>head && cross(q[tail]-k1,q[tail-1]-k1)>=0)tail--;
    q[++tail]=k1;
}

 

以上是关于模板斜率优化dp的常用模板的主要内容,如果未能解决你的问题,请参考以下文章

HDU1300 Pearls (斜率dp模板题)

HDU 3507 Print Article(斜率优化DP)

斜率dp的模板总结

HDU 3507 单调队列 斜率优化

以前的空间斜率优化的一点点总结

总结DP的常用优化