• poj2352 Stars


    给你星星的坐标(y递增,若y相等,x递增),每个星星都有一个等级,规定它的等级就是在它左下方的星星的个数。输入所有星星后,依次输出等级为0到n-1的星星的个数。
    思路
    统计某个星星左下角有多少星星。
    本题给出的数据已经按照y从小到大排好了,所以我们只需要考虑x就行,题意也就成了统计某个星星前面有多少星星。使用树状数组需要注意:给的点的坐标是从0开始的,树状数组中x不能为0,所以我们需要在输入x坐标时加一。

    
    #include <string.h>
    #include <stdio.h>
    #include <math.h>
    #include <queue>
    #include <stack>
    #include <algorithm>
    #define ll long long
    using namespace std;
    const int maxn=32005;
    int ans[maxn],c[maxn];
    int lowbit(int x)
    {
    	return x&(-x);
    }
    void add(int i,int val)// Add操作,将第i个元素增加val,那么他的父节点也要增加+
    {
    	while(i<=maxn)
    	{
    		c[i]+=val;
    		i+=lowbit(i);//i的父节点
    	}
    }
    int sum(int i)
    {
    	int s=0;
    	while(i>0)
    	{
    		s+=c[i];
    		i-=lowbit(i);
    	}
    	return s;
    }
    int main()
    {
    	int i,j,n;
    	scanf("%d",&n);
    	int x,y;
    	for (i=1; i<=n; i++)
    	{
    		scanf("%d%d",&x,&y);
    		x++;
    		ans[sum(x)]++;//sum算出x的级别,然后ans计数 
    		add(x,1);
    	}
    	for (i=0; i<n; i++)//级别从0->n-1的行星数量 
    		printf("%d
    ",ans[i]);
    
    	return 0;
    }
    
    
  • 相关阅读:
    API响应
    利用postman 实现Get和Post测试
    Postman 使用详解
    斐讯K2 22.5.9固件刷华硕固件实测教程
    Python多线程
    Ubuntu 16.04 上安装 MySQL 5.7 教程
    python 实战爬虫项目,学会这个32个项目天下无敌
    目录
    zip 下载解压
    滑动
  • 原文地址:https://www.cnblogs.com/shidianshixuan/p/14427247.html
Copyright © 2020-2023  润新知