如何在asp网站的后台,做金融看哪些网站有哪些,怎么给公司做个网站,营销型网站建设一般多少钱1542 1255 两道扫描线线段树的入门题。 基本没有什么区别#xff0c;前者是模板#xff0c;后者因为是求覆盖次数至少在两次以上的#xff0c;这个同样是具有并集性质的#xff0c;所以把cover的判断条件更改一下就可以了qwq。 hdu1542 代码如下#xff1a; #includei… 1542 1255 两道扫描线线段树的入门题。 基本没有什么区别前者是模板后者因为是求覆盖次数至少在两次以上的这个同样是具有并集性质的所以把cover的判断条件更改一下就可以了qwq。 hdu1542 代码如下 #includeiostream
#includecstdio
#includecstring
#includealgorithm
#define MAXN 200010
using namespace std;
int n,c,cnt;
double y[MAXN];
struct Node{double x,l,r;int cover;bool flag;
}node[MAXN];
struct Line
{double x,y_up,y_down;int flag;
}line[MAXN];
inline bool cmp(struct Line x,struct Line y){return x.xy.x;}
inline int ls(int x){return x1;}
inline int rs(int x){return x1|1;}
inline void build(int x,int l,int r)
{node[x].ly[l],node[x].ry[r],node[x].x-1,node[x].flagfalse,node[x].cover0;if(l1r){node[x].flagtrue; return;}int mid(lr)1;build(ls(x),l,mid);build(rs(x),mid,r);
}
inline double q_update(int x,double pos,double l,double r,int flag)
{if(lnode[x].r||rnode[x].l) return 0;if(node[x].flag){if(node[x].cover0) {node[x].xpos;node[x].coverflag;return 0;}double prenode[x].x;double ans(pos-pre)*(node[x].r-node[x].l);node[x].xpos;node[x].coverflag;return ans;}return q_update(ls(x),pos,l,r,flag)q_update(rs(x),pos,l,r,flag);
}
int main()
{scanf(%d,n);while(n!0){double x1,x2,y1,y2;cnt0;for(int i1;in;i){scanf(%lf%lf%lf%lf,x1,y1,x2,y2);line[cnt].xx1,line[cnt].y_downy1,line[cnt].y_upy2,line[cnt].flag1,y[cnt]y1;line[cnt].xx2,line[cnt].y_downy1,line[cnt].y_upy2,line[cnt].flag-1,y[cnt]y2;}sort(line[1],line[cnt1],cmp);sort(y[1],y[cnt1]);build(1,1,cnt);double ans0;for(int i1;icnt;i)ansq_update(1,line[i].x,line[i].y_down,line[i].y_up,line[i].flag);printf(Test case #%d\nTotal explored area: %.2lf\n\n,c,ans);scanf(%d,n);}return 0;
} hdu1255 代码如下 #includeiostream
#includecstdio
#includecstring
#includealgorithm
#define MAXN 200010
using namespace std;
int n,c,cnt,t;
double y[MAXN];
struct Node{double x,l,r;int cover;bool flag;
}node[MAXN];
struct Line
{double x,y_up,y_down;int flag;
}line[MAXN];
inline bool cmp(struct Line x,struct Line y){return x.xy.x;}
inline int ls(int x){return x1;}
inline int rs(int x){return x1|1;}
inline void build(int x,int l,int r)
{node[x].ly[l],node[x].ry[r],node[x].x-1,node[x].flagfalse,node[x].cover0;if(l1r){node[x].flagtrue; return;}int mid(lr)1;build(ls(x),l,mid);build(rs(x),mid,r);
}
inline double q_update(int x,double pos,double l,double r,int flag)
{if(lnode[x].r||rnode[x].l) return 0;if(node[x].flag){if(node[x].cover1) {node[x].xpos;node[x].coverflag;return 0;}double prenode[x].x;double ans(pos-pre)*(node[x].r-node[x].l);node[x].xpos;node[x].coverflag;return ans;}return q_update(ls(x),pos,l,r,flag)q_update(rs(x),pos,l,r,flag);
}
int main()
{scanf(%d,t);while(t--){scanf(%d,n);double x1,x2,y1,y2;cnt0;for(int i1;in;i){scanf(%lf%lf%lf%lf,x1,y1,x2,y2);line[cnt].xx1,line[cnt].y_downy1,line[cnt].y_upy2,line[cnt].flag1,y[cnt]y1;line[cnt].xx2,line[cnt].y_downy1,line[cnt].y_upy2,line[cnt].flag-1,y[cnt]y2;}sort(line[1],line[cnt1],cmp);sort(y[1],y[cnt1]);build(1,1,cnt);double ans0;for(int i1;icnt;i)ansq_update(1,line[i].x,line[i].y_down,line[i].y_up,line[i].flag);printf(%.2lf\n,ans);}return 0;
} 转载于:https://www.cnblogs.com/fengxunling/p/10263273.html