做网站费用分摊入什么科目,广东网站建设教程,成都网站开发价格,天门网页设计正题 题意
一条长m线#xff0c;有n条长度不同的线段#xff0c;求该线被分割成多少段 解题思路
标记颜色#xff0c;然后统计是用一个color表示上次搜到的(因为线段树的查找顺序是从左到右的)去重 代码
#includecstdio
#includecstring
using namespa…正题 题意
一条长m线有n条长度不同的线段求该线被分割成多少段 解题思路
标记颜色然后统计是用一个color表示上次搜到的(因为线段树的查找顺序是从左到右的)去重 代码
#includecstdio
#includecstring
using namespace std;
struct xjq{int l,r,cover;
}tree[400001];
int n,ll,rr,w,s,cl,color,m;
void build(int x,int a,int b)//建树
{tree[x].la;tree[x].rb;if (b-a1) return;else{int m(ab)/2;build(x*2,a,m);build(x*21,m,b);}
}
void inster(int x,int a,int b,int c)//插入
{if (tree[x].coverc) return;if (tree[x].la tree[x].rb)//标记{tree[x].coverc;return;}if (tree[x].cover0)//下传标记{tree[x*2].covertree[x].cover;tree[x*21].covertree[x].cover;tree[x].cover-1;}int mtree[x*2].r;if (bm) inster(x*2,a,b,c);else if (am) inster(x*21,a,b,c);else{inster(x*2,a,m,c);inster(x*21,m,b,c);}return;
}
void find(int x)
{if (tree[x].cover0){if (tree[x].cover!color){s;colortree[x].cover;//标记去重}return;}if (tree[x].r-tree[x].l1) return;else{find(x*2);find(x*21);}
}
int main()
{scanf(%d%d,n,m);build(1,1,m);for (int i1;in;i){scanf(%d%d%d,ll,rr,cl);inster(1,ll,rr,cl);}s0;color-2;find(1);printf(%d,s);
}