輸入輸出解釋:
第一行兩個數n,m表示長度為n的線段
接下來的m行讀入x,y
表示在[x,y]的區間中加入一條線段
最後一行兩個數x,y
輸出x到y這乙個區間中的線段數
保證x+1=y
樣例輸入 :
7 5
2 3
2 5
2 4
4 5
2 4
2 4
樣例輸出:
3 做法:
當某線段能夠完整覆蓋某個結點所對應的區間時,則不再二分。因此要統計某個單位區間上重疊的線段總數,必須把從葉結點到根結點路徑上所有結點的count域累加
**如下:
#include
#include
#include
using namespace std;
int c[500000],n,m,e=0;
void insert(int t,int l,int r,int a,int b)
else
}}void find(int t,int l,int r,int a,int b)
else
}}int count(int t)
return sum;
}int main()
scanf("%d
%d",&x,&y);
find(1,1,n,x,y);
int ans=count(e);
printf("%d",ans);
}
線段樹練習四(線段樹)
description 在平面內有一條長度為n的線段 不計入答案 可以對進行以下2種操作 1 把從x到y的再加一條線段 2 查詢從x到x 1有多少條線段 input 第一行輸入n,m 第2 m 1行,每行2個數x,y,表示從x到y再加一條線段 最後一行輸入2個數,為x和x 1,查詢x到x 1的線段數...
線段樹 SSLOJ 2647 線段樹練習四
ssl oj ssloj sslo j2647 2647 2647 在平面內有一條長度為n的線段 也算一條線段 可以對進行以下2種操作 1 x y 把從x到y的再加一條線段 2 x 查詢從x到x 1有多少條線段 第一行輸入n,m 第2 m 1行,每行3個數 對於每個查詢操作,輸出線段數目 7 2 2...
2647 線段樹題練習四
x軸上有若干條不同線段,問某個單位區間 x,x 1 上重疊了多少條線段?區間大小不超過100000 每行表示一條線段x,y 最後一行表示x,x 1 題庫上的輸入樣例和資料的輸入完全不同!只好用eoln來讀入,而且資料中會出現x y!最後打出乙個線段樹 每乙個區間記錄乙個c,表示這整個區間有多少條線段...