码迷,mamicode.com
首页 > 编程语言 > 详细

UVA 12663 第九届省赛 高桥与低桥 树状数组

时间:2014-11-18 23:43:52      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

bubuko.com,布布扣
 1 #include <cstdio>
 2 #include <math.h>
 3 #include <iostream>
 4 #include <cstring>
 5 #include <cstdlib>
 6 #include <algorithm>
 7 using namespace std;
 8 
 9 const int maxn = 1e5+10;
10 int c[maxn], a[maxn];
11 int lowbit(int p) {
12     return p&(-p);
13 }
14 void update(int p, int x) {
15     while(p<maxn) {
16         c[p] += x;
17         p += lowbit(p);
18     }
19 }
20 int query(int p) {
21     int sum = 0;
22     while(p>0) {
23         sum += c[p];
24         p -= lowbit(p);
25     }
26     return sum;
27 }
28 int main() {
29     //freopen("test.txt", "r", stdin);
30     int n, m, k, x, y, t=1;
31     while(scanf("%d %d %d", &n, &m, &k) != EOF) {
32         memset(c, 0, sizeof(c));
33         for(int i=1; i<=n; i++) scanf("%d", &a[i]);
34         sort(a+1, a+n+1);
35         int cur = 0;
36         for(int i=1; i<=m; i++) {
37             scanf("%d %d", &x, &y);
38             int l = upper_bound(a+1, a+n+1, cur+1) -a;
39             int r = upper_bound(a+1, a+n+1, x+1) - a;
40             update(l, 1); update(r, -1);
41             cur = y;
42         }
43         int ans = 0;
44         for(int i=1; i<n; i++) {
45             int f = upper_bound(a+1, a+n+1, a[i]) - a;
46             if(query(f)>=k) ans++;
47         }
48         printf("Case %d: %d\n", t++, ans);
49     }
50     return 0;
51 }
View Code

   这个树状数组和离散化真心优美。。。。。 感谢一下yi教!萌萌哒~~~

UVA 12663 第九届省赛 高桥与低桥 树状数组

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/sayeter/p/4014724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!