最近学的不错的树状数组。。。比赛的时候居然忘记了,害的我卡了半天,心态炸掉了。。。再写一下题解

http://codeforces.com/gym/101744/problem/E

其实本题就是一个给定序列,多次询问求数组区间和。。。这不明摆着的树状数组吗???

树状数组就是求前i项的和,这样只需要

ans=sum(end)-sum(start-1)即可,避免了多次询问的尴尬。。。反正记住,一般序列求和都是树状数组

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
long long tree[100050];
int  a[100050];
int  n,m;
int  b,e;
long long lowbit(long long x){return x&(-x);
}
void add(long long i,long long x){while (i<=n){tree[i]+=x;i+=lowbit(i);}
}
long long getsum(long long x){long long sum=0;while (x>0){sum+=tree[x];x-=lowbit(x);}return sum;
}
int main(){long long ans;while (~scanf("%d%d",&n,&m)){memset(tree,0,sizeof(tree));for (int i=1;i<=n;i++){scanf("%d",&a[i]);add(i,a[i]);}for (int i=1;i<=m;i++){scanf("%d%d",&b,&e);ans=getsum(e)-getsum(b-1);if (ans%2==1)printf("Nao\n");else printf("Sim\n");}}return 0;
}
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
long long tree[100050];
int  a[100050];
int  n,m;
int  b,e;
long long lowbit(long long x){return x&(-x);
}
void add(long long i,long long x){while (i<=n){tree[i]+=x;i+=lowbit(i);}
}
long long getsum(long long x){long long sum=0;while (x>0){sum+=tree[x];x-=lowbit(x);}return sum;
}
int main(){long long ans;while (~scanf("%d%d",&n,&m)){memset(tree,0,sizeof(tree));for (int i=1;i<=n;i++){scanf("%d",&a[i]);add(i,a[i]);}for (int i=1;i<=m;i++){scanf("%d%d",&b,&e);ans=getsum(e)-getsum(b-1);if (ans%2==1)printf("Nao\n");else printf("Sim\n");}}return 0;
}

Gym - 101744E卡了我半天的题。。。。原来是才学的树状数组。。。相关推荐

  1. 【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组

    题目大意 维护一个\(n\times m\)的矩阵,有两种操作: \(1~x_1~y_1~x_2~y_2~v\):把\((a,b),(c,d)\)为顶点的矩形区域内的所有数字加上\(v\). \(2~ ...

  2. 【练习手记】【多题合集】用树状数组做线段树练习1、2、3

    Warning:本篇无任何思路解释 ---------------------------------------------- 线段树练习 时间限制: 1 s 空间限制: 128000 KB 题目等 ...

  3. HDU1166 敌兵布阵(树状数组模板题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. (每日一题)P3312 [SDOI2014]数表(经典莫比乌斯反演 + 树状数组维护离线询问)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.11 莫反 P3312 [SDOI2 ...

  5. hdu1166敌兵布阵 树状数组裸题

    树状数组裸题 动态更新区间内的点,动态查询区间和 敌兵布阵 ac代码 #include<iostream> #include<algorithm> #include<cs ...

  6. 经典算法题每日演练——第十题 树状数组

    原文:经典算法题每日演练--第十题 树状数组 有一种数据结构是神奇的,神秘的,它展现了位运算与数组结合的神奇魅力,太牛逼的,它就是树状数组,这种数据结构不是神人是发现不了的. 一:概序 假如我现在有个 ...

  7. hdu 1166 敌兵布阵 树状数组 模板题

    这题是树状数组入门的一模板题,非常基础,被小白成为"赤裸裸"的入门题,哈哈,一个plus,一个sum全部搞定 #include<stdio.h> #include< ...

  8. [蓝桥杯][2018年第九届真题]整理玩具(树状数组)

    题目描述 小明有一套玩具,一共包含NxM个部件.这些部件摆放在一个包含NxM个小格子的玩具盒中,每个小格子中恰好摆放一个部件. 每一个部件上标记有一个0~9的整数,有可能有多个部件标记相同的整数. 小 ...

  9. 蓝桥杯2014届试题9题 小朋友排队(树状数组+类逆序对)

    题目: 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 n 个小朋友站成一排.现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友. 每个小朋友都有一个不高兴的 ...

最新文章

  1. vs连接mysql建一个表并增删查改_VS连接SQL Server数据库,增删改查详细教程(C#代码)...
  2. 人与人的差距在于认知
  3. 修复“-bash: locate: command not found”
  4. 对计算机图形学知识总结第二版,计算机图形学入门总结!
  5. 【数据结构与算法】之深入解析“解码方法”的求解思路与算法示例
  6. datax 定时执行多个job_DataX在有赞大数据平台的实践
  7. mongodb数据合并设计_MongoDB:将来自多个集合的数据合并成一个
  8. Python if语句Demo
  9. Python 入门介绍
  10. But Wang Xing, who is concerned about long-term
  11. 【转】Linux的僵尸进程解决攻略
  12. Pytorch和Torchvision版本对应
  13. 《Phper》MySQL 的一些基本操作
  14. mysql dbutil_通过dbutil操作数据库
  15. 营业执照在线生成_营业执照用旧的?办新的?办电子的?丨现在选哪个都很“好办”...
  16. Springboot自行车在线租赁系统毕业设计源码101157
  17. 广电linux机顶盒装软件,电视盒子如何安装第三方软件(四种参考方法)
  18. QQ现状深度剖析:你还认为QQ已经被微信打败了吗?
  19. 深圳“托育”放大招!政府出钱帮你带娃啦!
  20. 网络工程师——Super VLAN

热门文章

  1. 惊了,饿了么校园版月卡竟是最大骗局,怎么点都比普通(尊享)版月卡亏,以下是证明
  2. 如何用计算机快捷键代替鼠标,用鼠标代替快捷键,你的 Windows 还能这么操作?...
  3. vmware虚拟化平台虚拟机迁移至H3C CAS虚拟化平台
  4. 【矩阵论】内积空间与等距变换(2)
  5. Orac and LCM(数论)
  6. linux安全狗 停止服务,安全狗linux,windows安装设置
  7. cmd搭建vue前端项目详细过程
  8. matlab初始化很久,【原创】Matlab初始化initializing极慢解决方法
  9. 算法设计之DP练习(组硬币问题)
  10. 经典著作《动手学深度学习》中文版2.0beta版发布!开源下载!