zoukankan      html  css  js  c++  java
  • 【HDOJ】4325 Flowers

    树状数组+离散化的题目,一直在思考为什么结果不一样,后来才发现花开了就是开了不会再谢了。

     1 /* 4325 */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <cstdlib>
     6 #include <algorithm>
     7 using namespace std;
     8 
     9 #define MAXN 100005
    10 
    11 typedef struct {
    12     int s, t;
    13 } node_t;
    14 
    15 node_t nodes[MAXN];
    16 int qi[MAXN];
    17 int buf[MAXN*4];
    18 int sum[MAXN];
    19 
    20 inline int lowbit(int x) {
    21     return -x&x;
    22 }
    23 
    24 void update(int i, int v, int n) {
    25     while (i <= n) {
    26         sum[i] += v;
    27         i += lowbit(i);
    28     }
    29 }
    30 
    31 int query(int i) {
    32     int ret = 0;
    33     
    34     while (i) {
    35         ret += sum[i];
    36         i -= lowbit(i);
    37     }
    38     
    39     return ret;
    40 }
    41 
    42 int main() {
    43     int t, n, m, l;
    44     int i, j, k, tmp;
    45     int a, b, c;
    46     
    47     #ifndef ONLINE_JUDGE
    48         freopen("data.in", "r", stdin);
    49     #endif
    50     
    51     scanf("%d", &t);
    52     for (int tt=1; tt<=t; ++tt) {
    53         scanf("%d %d", &n, &m);
    54         l = 0;
    55         for (i=0; i<n; ++i) {
    56             scanf("%d %d", &nodes[i].s, &nodes[i].t);
    57             buf[l++] = nodes[i].s;
    58             buf[l++] = nodes[i].t;
    59         }
    60         for (i=0; i<m; ++i) {
    61             scanf("%d", &qi[i]);
    62             buf[l++] = qi[i];
    63         }
    64         
    65         // discretization
    66         buf[l++] = 0;
    67         sort(buf, buf+l);
    68         c = unique(buf, buf+l) - buf;
    69         
    70         memset(sum, 0, sizeof(sum));
    71         for (i=0; i<n; ++i) {
    72             a = lower_bound(buf, buf+c, nodes[i].s) - buf + 1;
    73             b = lower_bound(buf, buf+c, nodes[i].t) - buf + 1;
    74             update(a, 1, c);
    75             update(b+1, -1, c);
    76         }
    77         
    78         printf("Case #%d:
    ", tt);
    79         for (i=0; i<m; ++i) {
    80             j = lower_bound(buf, buf+c, qi[i]) - buf + 1;
    81             k = query(j);
    82             printf("%d
    ", k);
    83         }
    84     }
    85     
    86     return 0;
    87 }
  • 相关阅读:
    如何去除ecshop标题和网站底部的Powered by ECShop
    ecshop标签
    安装Wamp后 Apache无法启动的解决方法
    wamp5中的apache不能启动,80端口被占用
    iOS UI-AlertView(警示框)和ActionSheet(选择框、操作表单)
    iOS UI-三种简单的动画设置
    iOS UI-IOS开发中Xcode的一些使用技巧
    iOS UI-九宫格
    iOS开发-开发文档安装
    iOS UI-创建空项目
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4204669.html
Copyright © 2011-2022 走看看