zoukankan      html  css  js  c++  java
  • hdu 1166 敌兵布阵 (树状数组)

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define N 600000
     4 int n;
     5 int a[N],c[N];
     6 int lowbit(int x)
     7 {
     8     return x&(-x);
     9 }
    10 int sum(int k)
    11 {
    12     int ans=0;
    13     while(k>0)
    14     {
    15         ans+=c[k];
    16         k=k-lowbit(k);
    17     }
    18     return ans;
    19 }
    20 int add(int pos ,int num)
    21 {
    22     while(pos<=n)
    23     {
    24         c[pos]+=num;
    25         pos+=lowbit(pos);
    26     }
    27 }
    28 int main()
    29 {
    30     int T,l,i;
    31     scanf("%d",&T);
    32     char str[10];
    33     for(l=1;l<=T;l++)
    34     {
    35         scanf("%d",&n);
    36         memset(c,0,sizeof(c));
    37         a[0]=0;
    38         for(i=1;i<=n;i++)
    39         {
    40             scanf("%d",&a[i]);
    41             add(i,a[i]);
    42 
    43         }
    44         printf("Case %d:\n",l);
    45         while(scanf("%s",str)!=EOF)
    46         {
    47             if(strcmp(str,"End")==0)break;
    48             if(strcmp(str,"Query")==0)
    49             {
    50                 int x,y;
    51                 scanf("%d%d",&x,&y);
    52                 int t;
    53                 if(x>y)
    54                 {
    55                     t=x;x=y;y=t;
    56                 }
    57                 printf("%d\n",sum(y)-sum(x-1));
    58             }
    59             else
    60             {
    61                 int pos,y;
    62                 if(strcmp(str,"Add")==0)
    63                 {
    64                     scanf("%d%d",&pos,&y);
    65                     add(pos,y);
    66 
    67                 }
    68                 else
    69                 {
    70                      scanf("%d%d",&pos,&y);
    71                       add(pos,-y);
    72 
    73                 }
    74 
    75             }
    76         }
    77 
    78     }
    79 }
  • 相关阅读:
    linux内核编译
    字符设备驱动ioctl实现用户层内核层通信
    Linux内核完全剖析基于0.12内核
    KVM分析报告
    kvm的vmcall
    kvm源代码分析
    KVM基本概念
    linux系统调用
    UML的9种图例解析(转)
    SurfaceView的基本使用(转)
  • 原文地址:https://www.cnblogs.com/acSzz/p/2459580.html
Copyright © 2011-2022 走看看