zoukankan      html  css  js  c++  java
  • 士兵杀敌(二)

    //本题主要运用了树组数组的知识,学了后就会做了

    #include<stdio.h> #include<string.h> const int N=1000010; int n,c[N]; //该函数功能是求出n二进制中最右边0的个数的2次幂,也等于c[n]包含的元素个数num[n-lowbit(n)+1]+...+num[n] int lowbit(int n) { return n&(-n);     //return (n&(n^(n-1)); //^(Xor):异或关系
    } //更新数组中pos的值使它加上inc,更新首先更新c[pos]一直更新该点的父节点到顶端 void add(int pos,int x) { while(pos<=n) { c[pos]+=x; pos+=lowbit(pos); } } //该函数功能是求的前n项元素的和 int getSum(int n) { int s=0; while(n>0) { s+=c[n]; n-=lowbit(n); } return s; } int main() { freopen("in2.txt","r",stdin); int m,i,x; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d",&x); add(i,x); } int a,b; char str[6]; while(m--) { getchar(); scanf("%s%d%d",str,&a,&b); if(str[0]=='Q') printf("%d\n",getSum(b)-getSum(a-1)); else add(a,b); } return 0; }

      

  • 相关阅读:
    个人总结
    找水王
    nabcd需求分析
    四则运算最终篇-网页版四则运算
    第一次冲刺--个人工作总结02
    第一次冲刺--个人工作总结01
    组队APP功能点定点NABCD分析
    水王
    软件工程结对作业01
    个人工作总结06
  • 原文地址:https://www.cnblogs.com/yaling/p/2837950.html
Copyright © 2011-2022 走看看