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 |
Re:我累个去。。我的也是C++WA,G++ACIn Reply To:Re:我累个去。。我的也是C++WA,G++AC Posted by:changmu at 2014-09-06 00:21:20 > #include <stdio.h> > #include <string.h> > #include <algorithm> > #define inf 10000002 > #define maxn 10002 > #define lson l, mid, rt << 1 > #define rson mid + 1, r, rt << 1 | 1 > using namespace std; > > bool tree[maxn << 4]; > struct Node{ > int l, r; > } post[maxn]; > int hash[inf], tmp[maxn << 1]; > > bool update(int left, int right, int l, int r, int rt) > { > if(tree[rt]) return false; > if(left == l && right == r){ > return tree[rt] = true; > } > bool rst, a, b; > int mid = (l + r) >> 1; > if(right <= mid) rst = update(left, right, lson); > else if(left > mid) rst = update(left, right, rson); > else { > a = update(left, mid, lson); > b = update(mid + 1, right, rson); > rst = a || b; > } > tree[rt] = tree[rt << 1] && tree[rt << 1 | 1]; > return rst; > } > > int main() > { > //freopen("stdin.txt", "r", stdin); > int t, n, i, id, num, count, ans; > scanf("%d", &t); > while(t--){ > scanf("%d", &n); > for(i = id = 0; i < n; ++i){ > scanf("%d%d", &post[i].l, &post[i].r); > tmp[id++] = post[i].l; > tmp[id++] = post[i].r; > } > sort(tmp, tmp + id); > num = unique(tmp, tmp + id) - tmp; > for(i = count = 0; i < num; ++i){ > hash[tmp[i]] = count; > if(i < num - 1){ > if(tmp[i] + 1 == tmp[i+1]) ++count; > else count += 2; > } > > } > memset(tree, 0, sizeof(tree)); > for(i = n - 1, ans = 0; i >= 0; --i){ > if(update(hash[post[i].l], hash[post[i].r], 0, count, 1)) > ++ans; > } > printf("%d\n", ans); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator