hdu 1556 Color the ball
2015-06-10 20:31
288 查看
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556
线段树。。
线段树。。
[code]#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<vector> #include<map> using std::cin; using std::cout; using std::endl; using std::find; using std::map; using std::pair; using std::vector; #define all(c) (c).begin(), (c).end() #define cls(arr,val) memset(arr,val,sizeof(arr)) #define iter(c) decltype((c).begin()) #define cpresent(c, e) (find(all(c), (e)) != (c).end()) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i) #define pb(e) push_back(e) #define mp(a, b) make_pair(a, b) const int Max_N = 100010; typedef unsigned long long ull; #define mid ((l+r)>>1) #define lc (root<<1) #define rc (root<<1|1) struct Node { int val; }; int arr[Max_N]; struct SegTree { Node seg[Max_N << 2]; inline void init() { cls(seg, 0); } inline void push_down(int root) { if (seg[root].val != 0) { int &t = seg[root].val; seg[lc].val += t; seg[rc].val += t; t = 0; } } inline void update(int root, int l, int r, int x, int y){ if (x > r || y < l) return; if (x <= l && y >= r) { seg[root].val += 1; return; } push_down(root); update(lc, l, mid, x, y); update(rc, mid + 1, r, x, y); } inline int query(int root, int l, int r, int p) { if (p > r || p < l) return 0; if (p <= l && p >= r) return seg[root].val; push_down(root); int ret = 0; ret += query(lc, l, mid, p); ret += query(rc, mid + 1, r, p); return ret; } }seg; int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w+", stdout); #endif int n, a, b; while (~scanf("%d", &n) && n) { seg.init(); rep(i, n) scanf("%d %d", &a, &b), seg.update(1, 1, n, a, b); rep(i, n) arr[i] = seg.query(1, 1, n, i + 1); rep(i, n) printf("%d%c", arr[i], i < n - 1 ? ' ' : '\n'); } return 0; }
相关文章推荐
- 字节对齐导致sizeof()比实际更大
- JSONObject 试错
- 已定义的函数有返回值,函数调用可以作为一个函数的实参,但是不能作为形参
- 如何花两年时间面试一个人
- CPU读取磁盘数据的操作时序(CPU和磁盘控制器)
- Android 手动按power键上锁,没有锁屏提示音,无法恢复【单机必现】
- cxf框架和spring框架集成的Webservice例子
- Android中的android:layout_width和android:width
- 企业如何快速搭建大数据处理系统
- Convert Sorted Array to Binary Search Tree
- python解析pcap文件中的http数据包
- 五大算法---分治算法
- BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐( dfs )
- Visual studio 包含目录,库目录搞错了怎么办
- div添加contenteditable属性
- 【源代码】StringBuilder和StringBuffer震源深度分析
- 16进制的简单运算
- 关于union大小的计算
- 在O(1)时间删除链表结点
- PagerAdapter 页面无法刷新问题