zoukankan      html  css  js  c++  java
  • POJ 2352 (stars)

    【题意描述】

    就是给定n个星星的x,y坐标,y坐标按照从小到大的顺序进行排列,x坐标随机排列。下面求对于每个星星而言,其它星星的x,y的坐标都小于等于该星星的数目,然后输出所有的情况。

    【思路分析】

    我们这道题可以采用树状数组求解,将x+1作为树状数组的底标。

    【AC代码】

    #include<iostream>  
    #include<bitset>  
    #include<cstdio>  
    #include<cstring>  
    #include<algorithm>  
    #include<string>  
    #include<cstdlib>  
      
    using namespace std;  
      
    #define MAXN 40000  
      
      
    int n;  
    int c[MAXN];  //树状数组   
    int a[MAXN];
    int x_c[MAXN];  
    int lowbit(int t)  
    {  
        return t&(-t);  
    }  
    int sum(int i)  
    {  
        int s=0;  
        while(i>0)  
        {  
            s+=c[i];  
            i-=lowbit(i);  
        }  
        return s;  
    }  
      
    void modify(int i,int x)  
    {  
        while(i<=MAXN)  
        {  
            c[i]+=x;  
            i+=lowbit(i);     
        }   
    }  
      
    void solve()  
    {     
        int x;  
        memset(a,0,sizeof(a));  
        memset(c,0,sizeof(c));  
        for(int i=1;i<=n;i++)  
        {  
            scanf("%d",&x);  
            a[sum(x+1)]++;//由于是采用lowbit技术时值一定要大于0,对于x=0的情况,所以把所有的x+1.
            modify(x+1,1);  
            scanf("%d",&x);  
        } 
        for(int k=0;k<n;k++)  
        {  
            printf("%d
    ",a[k]);  
        }  
              
    }  
      
    int main()  
    {  
        while(scanf("%d",&n)!=EOF)  
            solve();  
        return 0;  
    }   

     

  • 相关阅读:
    Array数组的使用
    map集合中取出分类优先级最高的类别名称
    关键字static介绍
    构造方法
    封装和private,this,super关键字的简单应用
    hitTest:withEvent:方法流程
    Events and Responder Chain
    block没那么难(一):block的实现
    [译] Block 小测验
    OAuth流程
  • 原文地址:https://www.cnblogs.com/khbcsu/p/3898886.html
Copyright © 2011-2022 走看看