UESTC_秋实大哥与线段树 2015 UESTC Training for Data Structures<Problem M>

M - 秋实大哥与线段树

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit Status

“学习本无底,前进莫徬徨。” 秋实大哥对一旁玩手机的学弟说道。

秋实大哥是一个爱学习的人,今天他刚刚学习了线段树这个数据结构。

为了检验自己的掌握程度,秋实大哥给自己出了一个题,同时邀请大家一起来作。

秋实大哥的题目要求你维护一个序列,支持两种操作:一种是修改某一个元素的值;一种是询问一段区间的和。

Input

第一行包含一个整数n,表示序列的长度。

接下来一行包含n个整数ai,表示序列初始的元素。

接下来一行包含一个整数m,表示操作数。

接下来m行,每行是以下两种操作之一:

1 x v : 表示将第x个元素的值改为v
2 l r : 表示询问[l,r]这个区间的元素和

1≤n,m,v,ai≤100000,1≤l≤r≤n。

Output

对于每一个2 l r操作,输出一个整数占一行,表示对应的答案。

Sample input and output

Sample Input Sample Output
3
1 2 3
3
2 1 2
1 1 5
2 1 2
3
7

解题报告

本题...显然没有什么特别的技巧,直接上线段树即可解决,唯一注意的就是使用long long.

#include <iostream>
#include <cstring>

typedef long long ll;
using namespace std;
const int maxn = 5e5 + 15;
ll tree[maxn];

void updata(int pos,int v,int o,int l,int r)
{
  if (l == r)
   {
      tree[o] = v;
         return;
   }
  int mid = l + (r-l)/2;
  if (pos <= mid)
   updata(pos,v,2*o,l,mid);
  else
   updata(pos,v,2*o+1,mid+1,r);
  tree[o] = tree[2*o] + tree[2*o+1];
}

ll query(int ql,int qr,int o,int l,int r)
{
   if (ql <= l && r <= qr)
    return tree[o];
   ll res = 0;
   int mid = l + (r-l) / 2;
   if (ql <= mid)
    res += query(ql,qr,2*o,l,mid);
   if (qr > mid)
   res += query(ql,qr,2*o+1,mid+1,r);
   return res;
}

int main(int argc,char *argv[])
{
  int n,m;
  memset(tree,0,sizeof(tree));
  scanf("%d",&n);
  for(int i = 1 ; i <= n ; ++ i)
   {
         int temp;
         scanf("%d",&temp);
         updata(i,temp,1,1,n);
   }
  scanf("%d",&m);
  while(m--)
   {
          int i,j,k;
          scanf("%d%d%d",&i,&j,&k);
          if (i == 1)
           updata(j,k,1,1,n);
       else
        {
           ll ans = query(j,k,1,1,n);
           printf("%lld\n",ans);
        }
   }
  return 0;
}
时间: 2024-12-05 23:11:18

UESTC_秋实大哥与线段树 2015 UESTC Training for Data Structures<Problem M>的相关文章

UESTC_秋实大哥与妹纸 2015 UESTC Training for Data Structures&lt;Problem F&gt;

F - 秋实大哥与妹纸 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 1500/1500KB (Java/Others) Submit Status 致中和,天地位焉,万物育焉.秋实大哥是一个追求中庸的人. 虽然秋实大哥的仰慕者众多,但秋实大哥不喜欢极端的妹纸.所以他想从所有仰慕自己的妹纸中挑选出一个符合中庸之道的. 每一个妹纸对秋实大哥的仰慕程度可以用一个整数ai来表示,秋实大哥想要找出这些数的中位数. 计算有限个数的数据的中位

UESTC_秋实大哥与连锁快餐店 2015 UESTC Training for Graph Theory&lt;Problem A&gt;

A - 秋实大哥与连锁快餐店 Time Limit: 9000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 成大事者,不惟有超世之才,亦有坚忍不拔之志. 秋实大哥开了一家快餐店之后,由于人赢光环的影响,很快就赚得了大量的资金.为了继续实现心中的远大的理想,他打算在全国各地开设分店赚大钱.假设现在有n家快餐店(其中有至少有一家是旗舰店)分布在二维平面上,第i家快餐店的坐标为(xi,

UESTC_秋实大哥与时空漫游 2015 UESTC Training for Graph Theory&lt;Problem C&gt;

C - 秋实大哥与时空漫游 Time Limit: 4500/1500MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 秋实大哥通过全国的连锁快餐店发家致富,赚了大钱,接下来他打算通过这些钱实现他的另一个梦想————遨游太空,漫游星际. 秋实大哥满怀期待的出发了. .......啦啦啦啦啦啦啦啦啦...... 最后,秋实大哥花完了钱,觉得是时候回地球继续赚钱和过节了. 但是却被告知回地球的专机

UESTC_秋实大哥の恋爱物语 2015 UESTC Training for Search Algorithm &amp; String&lt;Problem K&gt;

K - 秋实大哥の恋爱物语 Time Limit: 5000/2000MS (Java/Others)     Memory Limit: 32000/32000KB (Java/Others) Submit Status 传说有这么一个故事! 在一个月白风清的晚上,秋实大哥约一位他心仪的妹子一起逛校园,浪漫的秋实大哥决定在当晚对妹子表白.“XXXXX...”,秋实大哥温情地说完了准备已久的话.而妹子决定用一种浪漫的方式接受秋实大哥(其实妹子早已对秋实大哥动心,这一刻她早已迫不及待了,但还是决定

UESTC_秋实大哥与花 2015 UESTC Training for Data Structures&lt;Problem B&gt;

B - 秋实大哥与花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉悦值都会增加一个相同的值v(v可能为负). 同时他想知道每次他唱完歌后这一段连续的花朵的

UESTC_秋实大哥与战争 2015 UESTC Training for Data Structures&lt;Problem D&gt;

D - 秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 男儿何不带吴钩,收取关山五十州. 征战天下是秋实大哥一生的梦想,所以今天他又在练习一个对战游戏. 秋实大哥命令所有士兵从左到右排成了一行来抵挡敌人的攻击. 敌方每一次会攻击一个士兵,这个士兵就会阵亡,整个阵列就会从这个位置断开:同时有的时候已阵亡的士兵会受人赢气息感染而复活. 秋

UESTC_秋实大哥与小朋友 2015 UESTC Training for Data Structures&lt;Problem A&gt;

A - 秋实大哥与小朋友 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 秋实大哥以周济天下,锄强扶弱为己任,他常对天长叹:安得广厦千万间,大庇天下寒士俱欢颜. 所以今天他又在给一群小朋友发糖吃. 他让所有的小朋友排成一行,从左到右标号.在接下去的时间中,他有时会给一段区间的小朋友每人v颗糖,有时会问第x个小朋友手里有几颗糖. 这对于没上过学的孩子来

UESTC_秋实大哥与快餐店 2015 UESTC Training for Data Structures&lt;Problem C&gt;

C - 秋实大哥与快餐店 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 朝为田舍郎,暮登天子堂.秋实大哥从小就怀抱有远大的理想,所以他开了一家快餐店. 秋实大哥根据菜的口感,给每一道菜一个唯一的CID,同时对于前来的客人,根据他们的口味喜好,秋实大哥会给每一个客人一个PID. 对于一个标号为PID的客人,他对标号为CID的菜的喜爱程度为PID∧CI

UESTC_秋实大哥下棋 2015 UESTC Training for Data Structures&lt;Problem I&gt;

I - 秋实大哥下棋 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 胜负胸中料已明,又从堂上出奇兵.秋实大哥是一个下棋好手,独孤求败的他觉得下棋已经无法满足他了,他开始研究一种新的玩法. 在一个n×m的棋盘上,放置了k个车,并且他在棋盘上标出了q个矩形,表示矩形内部是战略要地. 秋实大哥要求一个矩形内的每一个格子,都至少能被一辆在矩形内的车攻击到,