一种只用 17 行的李超树

struct line{
	int k=0,b=1e18;
	line(int _k,int _b){k=_k,b=_b;}
	int f(int x){return k*x+b;}
}t[N*4];
void update(int p,int l,int r,line c){
	int m=l+r>>1;
	if(c.f(m)<t[p].f(m))swap(c,t[p]);
	if(c.f(l)<t[p].f(l))update(p*2,l,m,c);
	if(c.f(r)<t[p].f(r))update(p*2+1,m+1,r,c);
}
int query(int p,int l,int r,int k){
	if(l==r)return t[p].f(k);
	int m=l+r>>1;
	if(k<=m)return min(t[p].f(k),query(p*2,l,m,k));
	else return min(t[p].f(k),query(p*2+1,m+1,r,k));
}
posted @ 2024-03-12 16:11  Linge_Zzzz  阅读(10)  评论(0)    收藏  举报  来源