我們可以通過for迴圈來實現操作,用乙個陣列來記錄是否有樹。當修改時,巢狀乙個for迴圈可以把這一部分標記下。
**如下:
#include using namespace std;
int main()
for(int j=0;j<=c-1;j++)
}for(int l=0;l<=b;l++)
cout《這麼簡單,一定是線段樹。
很簡單,我們建一棵區間修改區間查詢的線段樹,然後,,,就操作就可以了。
不會線段樹的可以去這裡和這裡學
#include#include#include#include#include#include#include#includeusing namespace std;
#define go(i,j,n,k) for(int i=j;i<=n;i+=k)
#define fo(i,j,n,k) for(int i=j;i>=n;i-=k)
#define rep(i,x) for(int i=h[x];i;i=e[i].nxt)
#define mn 100010
#define inf 2147483637
#define ll long long
//#define local
#define debug(...) fprintf(stderr, __va_args__)
#define root 0,n,1
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define bson l,r,rt
inline int read()
while(ch>='0'&&ch<='9')
return x*f;
}ll z[mn<<2],col[mn<<2];
inline void update(int rt)
inline void color(int l,int r,int rt,ll v)
inline void push_col(int l,int r,int rt)
}inline void build(int l,int r,int rt)
int m=(l+r)>>1;
build(lson);
build(rson);
update(rt);
}inline void modify(int l,int r,int rt,int nowl,int nowr,ll v)
int m=(l+r)>>1;
push_col(bson);
if(nowl<=m) modify(lson,nowl,nowr,v);
if(m>1;
push_col(bson);
if(nowl<=m){
if(m第12次發題解,希望可以兼顧所有的選手
P1047 校門外的樹 題解
題目鏈結 這個題比較簡單,怎麼做都行,但是看洛谷後面題解感覺還是有點複雜了,所以隨手寫一寫題解。題目描述 某校大門外長度為 l 的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 11 公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸 0 的位置,另一端在 l 的位置 數軸上的每個整數點,即 0,1,...
P1047 校門外的樹
某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止...
P1047 校門外的樹
某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止...