• [计蒜客]棋子等级 题解


    声明:这个题解上写的程序在计蒜客oj上无法提交通过,但是其他oj能通过,请谨慎食用

    题目描述

    坐标系平面上有好多棋子,每个整点上至多有一个棋子。
    假定棋子的等级是左下方的棋子个数,现在给出若干棋子的位置,求不同等级的棋子各有多少个。左下方包含正下和正左。说明((0,0))坐标的位置在左下角。

    输入格式

    第一行一个整数 (N) ((1leq Nleq 1000001≤N≤100000))
    接下来 (N) 行,一行两个整数 (X,Y (0leq X, Y < 1000000≤X,Y<100000)),表示坐标。
    数据保证坐标先按 (Y) 排序,再按 (X)排序。

    输出格式

    (N) 行,每行一个整数,从 (0)(N−1) 等级的棋子数量。

    样例输入

    5
    1 1
    5 1
    7 1
    3 3
    5 5
    

    样例输出

    1
    2
    1
    1
    0
    

    (Code)

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int MAX_N=100000;
    int C[MAX_N+10],ans[MAX_N+10];
    int n;
    int x,y;
    int lowbit(int x){
    	return x&(-x);
    }
    int getsum(int x){
    	int res=0;
        for(;x>0;x-=lowbit(x)){
            res+=C[x];
        }
        return res;
    }
    void change(int x,int c){
    	for(;x<=MAX_N;x+=lowbit(x)){
    		C[x]+=c;
        }
    }
    int main(){
        scanf("%d",&n);
    	for(int i=0;i<n;i++){
            scanf("%d%d",&x,&y);
            ans[getsum(x)]++;
            change(x,1);
        }
        for(int i=0;i<n;i++){
            printf("%d
    ",ans[i]);
        }
        return 0;
    }
    
    她透过我的血,看到了另一抹殷红
  • 相关阅读:
    初识jQuery(2)
    初识jQuery(1)
    document和javaScript内置对象
    location
    history
    window对象
    注释、语法约定、函数和作用域
    运算符和typeof
    string
    数据恢复
  • 原文地址:https://www.cnblogs.com/zhangbeini/p/13777500.html
Copyright © 2020-2023  润新知