zoukankan      html  css  js  c++  java
  • 数星星 contest 树状数组练习 T2

    Description

    天空中有一些星星,这些星星都在不同的位置,每个星星都有个坐标,如果一个星星的左下方(包括正左和正下)有k颗星星,就说这颗星星是k级的。


    给定星星的位置,输出各级星星的数目。


    Input

    第一行,一个整数N,表示星星的数目。接下来N行,每行两个整数x,y,表示一个星星的坐标,输入数据保证不会有星星重叠。


    Output

    N行,每行一个整数,分别表示0,1,2,3...N-1级星星的数目。


    Hint

    1<=N<=15000 0<=x,y<=32000。


    Solution

    这道题最开先真的难住我了(有什么难不住你的靠。),然后其实这个y还没什么用(。在加入的过程中就依次统计sum和修改后面的sum。用一个数组记录就行了。(真的很难啊靠。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    #define maxn 500005
    #define lowbit(x) (x&-x)
    #define int long long
    using namespace std;
    int c[maxn],cntx[maxn],cnty[maxn],gradee[maxn];
    int n,x,y,maxy;
    void doadd(int x,int d){
    	while(x<=maxn){
    		c[x]+=d;
    		x+=lowbit(x);
    	}
    }
    int dofinD(int x){
    	int ans=0;
    	while(x>0){
    		ans+=c[x];
    		x-=lowbit(x);
    	}
    	return ans;
    }
    signed main(){
    	scanf("%lld",&n);
    	for(int i=1;i<=n;i++){
    		scanf("%lld%lld",&x,&y);
    		int t=dofinD(x);
    		gradee[t]++;
    		doadd(x,1);
    	}
    	for(int i=0;i<n;i++){
    		printf("%lld
    ",gradee[i]);
    	}
    	return 0;
    }
    
  • 相关阅读:
    Reflections 0.9.12 Caused by: java.lang.IllegalStateException: zip file closed
    关于使用GATEWAY后静态资源失效问题
    Gbase8.7 和shardingsphere4.1.1适配
    统信UOS笔记(V20)
    mysql笔记
    axios 设置全局取消请求
    arr 转 tree
    云知声 面试题
    百度 二面 99 乘法表
    百度 无人车 面试
  • 原文地址:https://www.cnblogs.com/virtual-north-Illya/p/10045439.html
Copyright © 2011-2022 走看看