D - Mayor 's posters - 선분 수 구간 덮어 쓰기 + 이산 화
7687 단어 잘못 을 반성 하 다.지식 체계데이터 구조-선분 트 리사고
제목 링크
다음은 Accepted 코드 입 니 다.
/* + */
#include
#include
#include
using namespace std;
const int N = 11400;
struct Node{
int id, x;
}node[N<<1];
struct Tree{
int l, r, vis;
}tree[N<<3];
int flag;
void Build(int l, int r, int rt);/* */
void find(int L, int R, int rt);/* */
void Updata(int rt);/* */
bool cmp1(struct Node a, struct Node b);
bool cmp2(struct Node a, struct Node b);
int main(){
int T, n, i, ans;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(i = 1; i <= n<<1; i += 2){
scanf("%d %d", &node[i].x, &node[i+1].x);
node[i].id = node[i+1].id = i;
}
sort(node+1, node+1+(n<<1), cmp1);
int pre = 0, cnt = 0;
for(i = 1; i <= n<<1; i++){/* */
if(node[i].x == pre){
node[i].x = cnt;
}
else {
pre = node[i].x;
node[i].x = ++cnt;
}
}
Build(1, n<<1, 1);/*2 n——why?*/
sort(node+1, node+1+(n<<1), cmp2), ans = 0;
for(i = 1; i <= n<<1; i += 2){/* , */
flag = 0;
find(node[i].x, node[i+1].x, 1);
if(flag) ans++;
}
printf("%d
", ans);
}
return 0;
}
bool cmp1(struct Node a, struct Node b){
return a.x < b.x;
}
bool cmp2(struct Node a, struct Node b){
if(a.id != b.id) return a.id > b.id;
else return a.x < b.x;
}
void Build(int l, int r, int rt){/* */
tree[rt].l = l;
tree[rt].r = r;
tree[rt].vis = 0;
if(tree[rt].l == tree[rt].r)
return;
int mid = (l+r)>>1;
Build(l, mid, rt<<1);
Build(mid+1, r, rt<<1|1);
}
void find(int l, int r, int rt){/* */
if(tree[rt].vis)
return;
if(tree[rt].l == l && tree[rt].r == r){
tree[rt].vis = 1, flag = 1;
return;
}
int mid = (tree[rt].l+tree[rt].r)>>1;
if(r <= mid)
find(l, r, rt<<1);
else if(l > mid)
find(l, r, rt<<1|1);
else {
find(l, mid, rt<<1);
find(mid+1, r, rt<<1|1);
}
Updata(rt);
}
void Updata(int rt){/* */
tree[rt].vis = tree[rt<<1].vis & tree[rt<<1|1].vis;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정렬 이 진 트 리 의 생 성 주의 중복 요소think: 1 정렬 이 진 트 리 를 만 들 때 반복 요소 sdut 원 제 링크 트 리 구조 연습 - 정렬 이 진 트 리 의 중간 순서 옮 겨 다 니 기 Time Limit: 1000 MS Memory Limit:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.