zoukankan      html  css  js  c++  java
  • poj2352 stars 树状数组


    找某颗星的左下角有几颗星。输出有多少颗星左下角拥有0颗星,有多少颗左下角拥有1颗星……一直到n-1 。
    因为输入时是按y值是递增的,所以直接用x(x也是递增的)来构建树状数组,接下来其实就是统计x 前面有多少个比它少的数。
    树状数组参考:http://zxj015.blog.163.com/blog/static/170613730201136105251115/

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    using namespace std;
    const int MAX = 32002;

    int n,c[MAX],an[MAX];
    int lowbit(int x){
        return x & (-x);
    }
     
    void add(int i, int w){
        int flag=i;
        while(i <= 32002){
            c[i] += w;
            i += lowbit(i);
        }
    }
     
    int sum(int i){
        int ans = 0,flag=i;
        while(i > 0){
            ans += c[i];
            i -= lowbit(i);
        }
        return ans;
    }
     
    int main()
    {
        int i,j,num,x,y;

        while(scanf("%d",&n)!=EOF)
        {
          for(i=0;i<=32002;i++)
           {
               c[i]=0;
               an[i]=0;
           }
          for(i = 1; i <= n; i ++)
          {
                         scanf("%d%d",&x,&y);
                         x++; //注意不能为零
                         an[sum(x)]++;
                         add(x,1);
          }
         for(i=0;i<n;i++)
             printf("%d\n",an[i]);
       }
     
        return 0;
    }

  • 相关阅读:
    大四实习有点晚[转载]
    .net2.0数据绑定语法
    明天要去南京了
    Master & Content Page Relation(Event Ordering)
    在验证中使用图像和声音(ErrorMessage)
    设置FLash透明
    Basic Skill in .net2.0
    教育研究方法
    程序员是如何捕猎大象的[转]
    My lost card
  • 原文地址:https://www.cnblogs.com/zxj015/p/2740242.html
Copyright © 2011-2022 走看看