• nyoj_116_士兵杀敌(二)_201404131107


     

    士兵杀敌(二)

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:5
     
    描述

    南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。

    小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。

    南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。

     
    输入
    只有一组测试数据
    第一行是两个整数N,M,其中N表示士兵的个数(1<N<1000000),M表示指令的条数。(1<M<100000)
    随后的一行是N个整数,ai表示第i号士兵杀敌数目。(0<=ai<=100)
    随后的M行每行是一条指令,这条指令包含了一个字符串和两个整数,首先是一个字符串,如果是字符串QUERY则表示南将军进行了查询操作,后面的两个整数m,n,表示查询的起始与终止士兵编号;如果是字符串ADD则后面跟的两个整数I,A(1<=I<=N,1<=A<=100),表示第I个士兵新增杀敌数为A.
    输出
    对于每次查询,输出一个整数R表示第m号士兵到第n号士兵的总杀敌数,每组输出占一行
    样例输入
    5 6
    1 2 3 4 5
    QUERY 1 3
    ADD 1 2
    QUERY 1 3
    ADD 2 3
    QUERY 1 2
    QUERY 1 5
    样例输出
    6
    8
    8
    20
    来源
    [张云聪]原创
    上传者
    张云聪
     
     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 int c[1000010],n;
     5 
     6 int lowbit(int n)
     7 {
     8     return n&(-n);
     9 }
    10 
    11 void add(int i,int t)
    12 {
    13     while(i<=n)
    14     {
    15         c[i]+=t;
    16         i+=lowbit(i);
    17     }
    18 }
    19 
    20 int sum(int n)
    21 {
    22     int s=0;
    23     while(n>0)
    24     {
    25         s+=c[n];
    26         n-=lowbit(n);
    27     }
    28     return s;
    29 }
    30 
    31 int main()
    32 {
    33     int i,j,a,t1,t2,m;
    34     char s[10];
    35     memset(c,0,sizeof(c));
    36     scanf("%d %d",&n,&m);
    37     for(i=1;i<=n;i++)
    38     {
    39         scanf("%d",&a);
    40         add(i,a);
    41     }
    42     for(j=1;j<=m;j++)
    43     {
    44         scanf("%s%d%d",s,&t1,&t2);
    45         if(s[0]=='A')
    46         add(t1,t2);
    47         else
    48         printf("%d
    ",sum(t2)-sum(t1-1));
    49     }
    50     return 0;
    51 }
    52 //树状数组 --插点取线
  • 相关阅读:
    Roads in the North
    Labyrinth
    英语写作(二)
    语法长难句笔记
    英语写作(一)
    MySQL笔记(二)
    MySQL笔记(一)
    Mybatis简单使用与配置
    Mybatis映射文件
    什么是serializable接口?
  • 原文地址:https://www.cnblogs.com/xl1027515989/p/3661958.html
Copyright © 2020-2023  润新知