zoukankan      html  css  js  c++  java
  • hdu 1541 Stars

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541

    思路:要求求出不同等级的星星的个数,开始怎么也想不到用树状数组,看完某些大神的博客之后才用树状数组写的,搞了好久才懂得数组的更新过程

     1 #include<cstdio>  
     2 #include<iostream>  
     3 #include<algorithm>
     4 #include<math.h> 
     5 #include<string.h>  
     6 #include<vector> 
     7 #include<queue>
     8 #include<iterator>
     9 #include<vector>
    10 #include<set>
    11 #define dinf 0x3f3f3f3f
    12 typedef long long ll;
    13 const int Max=(1<<16)+10;
    14 using namespace std;
    15 
    16 #define SIZE 1000005
    17 
    18 int c[SIZE],level[SIZE],n;
    19 
    20 int Lowbit(int x)
    21 {
    22     return x&(-x);
    23 }
    24 
    25 int Sum(int x)
    26 {
    27     int sum=0;
    28     while(x>0)
    29     {
    30         sum+=c[x];
    31         x-=Lowbit(x);
    32     }
    33     return sum;
    34 }
    35 
    36 void Update(int i,int x)
    37 {
    38     while(i<=SIZE)//要把所有的与i相关的c数组中的值全部更新,不然会出错 
    39     {
    40         c[i]+=x;
    41         i+=Lowbit(i);
    42     }
    43 }
    44 
    45 
    46 int main()
    47 {
    48     while(~scanf("%d",&n))
    49     {
    50         memset(level,0,sizeof(level));
    51         memset(c,0,sizeof(c));
    52         int x,y;
    53         for(int i=0;i<n;i++)
    54         {
    55             scanf("%d %d",&x,&y);
    56             level[Sum(++x)]++;
    57             Update(x,1);
    58             /*
    59             for(int j=0;j<10;j++)
    60                 printf("%d ",c[j]);
    61             printf("
    ");
    62             for(int j=0;j<10;j++)
    63                 printf("%d ",level[j]); 
    64             printf("
    ");
    65             */
    66         }
    67         for(int i=0;i<n;i++)
    68             printf("%d
    ",level[i]);
    69     } 
    70     return 0;
    71  } 

    附上样例中数组的更新过程,上面一行是c[i],下面是level[i]

  • 相关阅读:
    【核心算法1】双指针问题
    关于博客园主题
    正交工具allpairs使用
    postman设置变量
    WebDriver驱动下载地址
    MySQL语法基础
    异或
    测试——pytest库上手
    and 和 or 的语句运算
    爬虫——Scrapy中选择器的基本使用(转)
  • 原文地址:https://www.cnblogs.com/pter/p/5706560.html
Copyright © 2011-2022 走看看