Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求测试数据,WA到死。。。(付线段树代码)#include <cstdio> #include <algorithm> using namespace std; int poster_x[10040]; int poster_y[10040]; int n; int point[40040]; char flag[10040]; int tot; int begin[80040]; int end[80040]; int lc[80040]; int rc[80040]; char color[80040]; char needclear[80040]; void MakeTree(int x, int y) { ++tot; int v = tot; begin[v] = point[x]; end[v] = point[y]; color[v] = 0; needclear[v] = 0; if(x + 1 == y) { lc[v] = 0; rc[v] = 0; } else { lc[v] = tot + 1; MakeTree(x, (x + y) / 2); rc[v] = tot + 1; MakeTree((x + y) / 2, y); } } void clear(int num) { needclear[num] = 0; if(lc[num] != 0) // internal node { color[lc[num]] = color[num]; color[rc[num]] = color[num]; needclear[lc[num]] = 1; needclear[rc[num]] = 1; } } void Insert(int x, int y, int c, int num) { if(needclear[num]) clear(num); if(begin[num] >= x && end[num] <= y) { color[num] = c; clear(num); } else { if(color[num] != c) { color[num] = -1; if(x < end[lc[num]]) Insert(x, y, c, lc[num]); if(y > begin[rc[num]]) Insert(x, y, c, rc[num]); } } } void Query(int num) { if(needclear[num]) clear(num); if(color[num] >= 0) flag[color[num]] = 1; else { Query(lc[num]); Query(rc[num]); } } int main(void) { int c; scanf("%d", &c); while(c--) { scanf("%d", &n); for(int i = 0; i < n; ++i) { scanf("%d%d", &poster_x[i], &poster_y[i]); point[2 * i] = --poster_x[i]; point[2 * i + 1] = poster_y[i]; } sort(point, point + 2 * n); int pos = 1; for(int i = 1; i < 2 * n; ++i) { if(point[i] != point[pos - 1]) point[pos++] = point[i]; } tot = 0; MakeTree(0, pos-1); for(int i = 0; i < n; ++i) { Insert(poster_x[i], poster_y[i], i + 1, 1); } memset(flag, 0, sizeof(char) * (n + 1)); Query(1); int sum = 0; for(int i = 1; i <= n; ++i) sum += flag[i]; printf("%d\n", sum); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator