标签:style blog http io ar color os sp for
这2题放一起吧 反正都是同一场的.
B题 虽然是被自己想复杂了 用了树状数组。。
当时自己还没离散化出来 还是用了超神的离散化 ‘
不知道自己的哪边错了 ffffffk
<区间更新 单点查询>
1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 int res; 7 const int size = 100010*3; 8 struct data 9 { 10 int L; 11 int R; 12 }node[size]; 13 int lisan[size] , a[size] , tree[size]; 14 15 int lowBit( int x ) 16 { 17 return x & -x; 18 } 19 20 void update( int index , int var ) 21 { 22 while( index<=res ) 23 { 24 tree[index] += var; 25 index += lowBit( index ); 26 } 27 } 28 29 int getSum( int index ) 30 { 31 int sum = 0; 32 while( index ) 33 { 34 sum += tree[index]; 35 index -=lowBit( index ); 36 } 37 return sum; 38 } 39 40 int main() 41 { 42 cin.sync_with_stdio(false); 43 int t , n , ans , cnt; 44 cin >> t; 45 while( t-- ) 46 { 47 cin >> n; 48 memset( tree , 0 , sizeof(tree) ); 49 res = cnt = 1; 50 for( int i = 1 ; i<=n ; i++ ) 51 { 52 cin >> node[i].L >> node[i].R; 53 a[cnt++] = node[i].L; 54 a[cnt++] = node[i].R; 55 } 56 sort( a+1 , a+cnt ); 57 for( int i = 1 ; i<cnt ; i++ ) 58 { 59 if (i == 1) 60 { 61 lisan[a[i]] = ++res; 62 } 63 else if (a[i] == a[i - 1]) 64 { 65 lisan[a[i]] = lisan[a[i - 1]]; 66 } 67 else 68 { 69 lisan[a[i]] = ++res; 70 } 71 } 72 for( int i = 1 ; i<=n ; i++ ) 73 { 74 update( lisan[ node[i].L ] , 1 ); 75 update( lisan[ node[i].R ]+1 , -1 ); 76 } 77 ans = 0; 78 for( int i = 1 ; i<=cnt ; i++ ) 79 { 80 ans = max( ans , getSum(i) ); 81 } 82 cout << ans << endl; 83 } 84 return 0; 85 }
另外一个dp还没出 明天再想吧 累。。。
标签:style blog http io ar color os sp for
原文地址:http://www.cnblogs.com/radical/p/4132048.html