多校第七场 1004 hdu 5372 Segment Game(树状数组)
2015-08-11 20:25
344 查看
AC代码:
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #define MAX 200007 using namespace std; int c[2][MAX<<1],n,cnt; int id[MAX]; int lowbit ( int x ) { return x&-x; } void add ( int x , int v , int f ) { while ( x <= cnt ) { c[f][x]+=v; x += lowbit ( x ); } } int sum ( int x , int f ) { int ret = 0; while ( x ) { ret += c[f][x]; x -= lowbit ( x ); } return ret; } struct { int l,r,f; }a[MAX]; int tid[MAX<<1]; struct Node { int v,id; bool operator < ( const Node& a ) const { return v < a.v; } }b[MAX<<1]; int main ( ) { int x,y,cc=1; while ( ~scanf ( "%d" , &n ) ) { memset ( c , 0 , sizeof ( c ) ); int m = 0,op=1; for ( int i = 1 ; i <= n ; i++ ) { scanf ( "%d%d" , &x , &y ); a[i].f = x; if ( !x ) { b[m].v = y; id[op] = i-1; } else b[m].v = b[id[y]<<1].v; b[m++].id = i<<1; if ( !x ) { b[m].v = y+op; op++; } else b[m].v = b[id[y]<<1|1].v; b[m++].id = i<<1|1; } sort ( b , b+m ); cnt = 0; tid[b[0].id] = ++cnt; for ( int i = 1 ; i < m ; i++ ) if ( b[i].v == b[i-1].v ) tid[b[i].id] = cnt; else tid[b[i].id] = ++cnt; memset ( c , 0 , sizeof ( c )); for ( int i = 1 ; i <= n ; i++ ) { a[i].l = tid[i<<1]; a[i].r = tid[i<<1|1]; } printf ( "Case #%d:\n" , cc++ ); for ( int i = 1 ; i <= n ; i++ ) { int l = cnt+1-a[i].l; int r = cnt+1-a[i].r; //cout <<"yes : " << i << " " << l << " " << r << endl; //cout << l << " " << r << endl; if ( a[i].f ) { add ( l , -1 , 0 ); add ( r , -1 , 1 ); } else { //cout << sum( l-1 , 0 ) << " " << sum ( r-1 , 1 ) << endl; printf ( "%d\n" , sum( l , 0 ) - sum( r-1, 1 )); add ( l , 1 , 0 ); add ( r , 1 , 1 ); } } } }
相关文章推荐
- 《开源公开课分享》:Java开源框架案例视频分享
- 通过三层实现年龄增长
- The Accomodation of Students
- C#:控制WinForm界面的显示
- 可变参数宏__VA_ARGS__
- MKNetworkit,Express实现简单登录验证(1)
- I have a dream
- this 指针
- 解决Xcode上传出现的Error ITMS-9000问题 ,No image found at the path referenced under key CFBundleIcons AppIcon
- 《开源公开课分享》:Java开源框架案例分享
- 阿里云服务器linux(centos)常用命令
- FastJSON的用法
- leetcode——Lowest Common Ancestor of a Binary Search Tree
- 基于ARP的监听
- 29-HTML-19-HTML(标签的分类)
- Java多态性理解
- Android单元测试异常总结---Test run failed:Unable to find instrumentation target package
- 10-2. 删除字符串中的子串(20)
- uva11752(合数)
- 8月11日----数据库、serverlet