• Star HDU1541


    看到图和坐标就想到了用二维数组来写   但是连数组的开不下   写好了也爆内存

    没看到题目是按照y坐标升序给的坐标

    这样就可以忽略y坐标 进行一维的树状数组 

    #include<bits/stdc++.h>
    using namespace std;
    #define N 32050
    int c[N];
    int ans[N];
    int lowbit(int i)
    {
        return i&-i;
    }
    void update(int x,int v)
    {
        for(int i=x;i<N;i+=lowbit(i))
            c[i]+=v;
       return ;
    }
    int sum(int x)
    {
        int ans=0;
        for(int i=x;i>0;i-=lowbit(i))
               ans+=c[i];
        return ans;
    }
    int main()
    {
        int k;
        while(scanf("%d",&k)==1)
        {
            memset(c,0,sizeof(c));
            memset(ans,0,sizeof(ans));
         for(int i=1;i<=k;i++)
         {
             int a,b;
             scanf("%d%d",&a,&b);
             a++;
             ans[  sum(a) ]++;
             update(a,1);
         }
         for(int i=0;i<k;i++)
            printf("%d
    ",ans[i]);
        }
    }
  • 相关阅读:
    C语言函数qsort的使用方法
    成绩打分
    distance.c
    留学生题目
    6大排序算法比较
    小游戏得分[石头剪刀布]
    二叉排序树算法
    头文件相关
    小型考试系统
    小题目【链表1】
  • 原文地址:https://www.cnblogs.com/bxd123/p/10357395.html
Copyright © 2020-2023  润新知