• XidianOJ 1177 Counting Stars


    题目描述

       "But baby, I've been, I've been praying hard,
        Said, no more counting dollars
        We'll be counting stars"

    Grandpa Shaw loves counting stars.
    One evening he was sitting in his armchar, trying to figure out this problem.

    Consider the sky as a rectangular coordinates, each star has a coordinate (Xi,Yi).
    To make it simple, all the stars are in the first quadrant.
    Now he want to know how many stars there are in the square formed by (0,0) and (x,y).
    (including stars in edges, 4 vertices of the square is (0,0) (x,0) (x,y) (0,y))

    There are n stars in the sky, and he raised m questions.
    Because grandpa Shaw's eyesight is poor, he ask you for help.

    [img]
    in this image, yellow stars are in the square, blue ones are not.

    输入

    multiple test cases, please read until EOF.
    for each test case:
    first line contains two integers n m (0 <= n, m <= 10^5).
    following n lines each line contains two integers Xi Yi (0 <= Xi, Yi <= 10^6).
    following m lines each line contains two integers x y (0 <= x, y <= 10^6).

    输出

    for each test case:
    first line "Case #t:" t is the number of test case.
    following m lines, each line contains one integer, the number of stars in that square.

    --正文
    由于是离线的询问,并不需要二维
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int n,m;
    int c[1000001],ans[1000001];
    
    struct StarNode {
        int x,y;
        int num;
        bool query;
    };
    struct StarNode star[2000001];
    
    bool cmp(struct StarNode s1,struct StarNode s2){
        if (s1.x == s2.x) return s1.y < s2.y;
        return s1.x < s2.x;
    }
    int lowbit(int i) {
        return i&-i;
    }
    void Update(int i,int x){
        while (i < 1000001){
            c[i] += x;
            i += lowbit(i);
        }
    }
    int Sum(int i){
        int s = 0;
        while (i > 0) {
            s += c[i];
            i -= lowbit(i);
        } 
        return s;
    } 
    
    int main(){
        int total = 0;
        while (scanf("%d %d",&n,&m) != EOF){
            memset(c,0,sizeof(c)); total ++;
            int i,j;
            for (i=1;i<=n;i++){
                int xi,yi;
                scanf("%d %d",&star[i].x,&star[i].y);
                star[i].query = false;
            }
            for (i=n+1;i<=n+m;i++){
                scanf("%d %d",&star[i].x,&star[i].y);
                star[i].query = true; star[i].num = i - n;
            }
            sort(star+1,star+1+n+m,cmp);
            printf("Case #%d:
    ",total);
            for (i=1;i<=n+m;i++){
                if (star[i].query) 
                    ans[star[i].num] = Sum(star[i].y+1);
                else 
                    Update(star[i].y+1,1);
            }
            for (i=1;i<=m;i++) 
                printf("%d
    ",ans[i]);
        } 
        return 0;
    } 
     
  • 相关阅读:
    http-server -S 开启 https 服务
    material-ui react的ui框架 有时间可以看看 chia用的前台ui
    关于vue.js:iview-Bug-5114在iview的Poptip气泡提示内调用DatePicker出现遮挡或同时关闭窗口等冲突问题[转]
    coding 的pages 静态要六分钱一个月,我也是醉了。
    jeesite 有时间看看
    选择单词后 按 ctrl + space 单词发音
    什么是CI/CD
    PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用
    浅析requestAnimationFrame
    webpack性能优化
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6151316.html
Copyright © 2020-2023  润新知