[선분 수] HDU 1698
2695 단어 ACM
아니면 이 주소 입 니까? 이번 에는 최적화 에 사용 되 는 구간 지연 업 데 이 트 를 사 용 했 습 니 다. 시간 복잡 도 는 O (lgn) 입 니 다.
PS: 변 수 를 제대로 명명 하지 않 은 구덩이 아버지 에 게......................................................
#include
#include
#include
#define lson root * 2
#define rson root * 2 + 1
using namespace std;
const int X = 100002 << 2;
int Tree[ X ];
int flag[ X ]; //
void build ( int root, int ST, int END ) {
if ( ST == END ) {
Tree[ root ] = 1;
flag[ root ] = 0;
} else {
int mid = ( ST + END ) / 2;
build ( lson, ST, mid );
build ( rson, mid + 1, END );
Tree[ root ] = Tree[ lson ] + Tree[ rson ];
}
}
// O(lgn)
// root
void pushDown ( int root, int st, int end ) {
if ( flag[ root ] ) {
flag[ lson ] = flag[ rson ] = flag[ root ]; // z( )
int mid = ( st + end ) / 2;
Tree[ lson ] =
( mid - st + 1 ) * flag[ root ]; // * z
Tree[ rson ] = ( end - ( mid + 1 ) + 1 ) * flag[ root ];
flag[ root ] = 0;
}
}
// ST END --> required
// st,end --> now
void update ( int root, int st, int end, int ST, int END, int val ) {
if ( st > END || end < ST )
return;
//
if ( st >= ST && end <= END ) {
flag[ root ] = val;
Tree[ root ] = val * ( end - st + 1 ); //
return;
}
// flag,
pushDown ( root, st, end );
int mid = ( st + end ) / 2;
if ( mid >= ST )
update ( lson, st, mid, ST, END, val );
if ( mid < END )
update ( rson, mid + 1, end, ST, END, val );
Tree[ root ] = Tree[ lson ] + Tree[ rson ];
}
int main () {
int n;
scanf ( "%d", &n );
for ( int i = 1; i <= n; ++i ) {
memset ( flag, 0, sizeof ( flag ) );
int N, Q;
scanf ( "%d%d", &N, &Q );
build ( 1, 1, N );
while ( Q-- ) {
int x, y, z;
scanf ( "%d%d%d", &x, &y, &z );
update ( 1, 1, N, x, y, z );
}
printf ( "Case %d: The total value of the hook is %d.
", i, Tree[ 1 ] );
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hdu 1233 절 대 컴퓨터 대학원 재시험모 성에 서 마을 의 교통 상황 을 조사 하여 얻 은 통계표 에는 임의의 두 마을 간 의 거리 가 열거 되 어 있다.성 정부의 '원활 한 공사' 목 표 는 성 전체의 어느 두 마을 간 에 도 도로 교통 을 실현 할 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.