라인 트리 구간 추출 max 구간 조회
$[L, R]$를 mx에서 max로 가져오도록 설정합니다.
우리는 라인 트리에서 mx보다 작은 구간을 나누어 구간 수정으로 바꿀 수 있다.
구체적인 실현은 유지보수 구간의 최소값과 구간의 최대값을 우리가 한 구간으로 귀속시키는 것이다. 만약에 이 구간의 최소값이 mx보다 크면 이 구간을 상관하지 않아도 된다.
그리고 우리는 구간이 $[L, R]$에 포함되어 있다고 가정합니다. 만약 이 구간의 최대 값이 mx보다 작다면, 직접 수정하고, 그렇지 않으면 다시 그의 하위 구역으로 돌아가서 찾습니다.
void change(int l, int r, int o, int ql, int qr, int c)
{
if (mn[o] >= c) return ;
if (l >= ql and r <= qr)
{
if (mx[o] <= c) {
mx[o] = mn[o] = lzy[o] = c;
tr[o] = (r - l + 1) * c;
return ;
}
}
spread(o, l, r);//
int mid = (l + r) >> 1;
if (ql <= mid) change(l, mid, ls, ql, qr, c);
if (qr > mid) change(mid + 1, r, rs, ql, qr, c);
pushup(o);
}
다음으로 전송:https://www.cnblogs.com/BriMon/p/9864702.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.