Picture POJ - 1177 线段树+离散化+扫描线 求交叉图像周长
参考 https://www.cnblogs.com/null00/archive/2012/04/22/2464876.html #include <stdio.h> #include <algorithm> #define LEN 10000 using namespace std; struct Node { int left; int right; int count;//被覆盖次数 //所包含的区间数量,如三条[1,2],[2,3],[4,5]线段被覆盖,则line=2,因为 [1,2],[2,3]是连续的。 int line;//所包含的区间数量 int lbd;//左端点是否被覆盖 用来辅助对line的计算 int rbd;//右端点是否被覆盖 int m;//测度 ,即覆盖的区间长度,如[2,8]就为6 }node[LEN*4];; struct ScanLine { int x; int y1; int y2; int flag; }scan[LEN];; int y[LEN]; void build(int l, int r, int i) { node[i].left = l; node[i].right = r; node[i].count = 0; node[i].m = 0; node[i].line = 0; if (r - l > 1) { int