题意:

第一种操作是每次在一个区间布置添加一种地雷,第二种操作求指定区间地雷种类。

思路:

利用前缀和的思想,[L,R]之间的地雷种数等于1~R之间的地雷种数减去 1~R之间那些没有在[L,R]之间的种数。
1到R之间的地雷种数就是1~R之间的左端点个数。
没有布置到[L,R]之间的,就是在1~L-1里就已经布置结束的个数,也就是1到L-1之间的右端点个数。
所以就用树状数组维护前缀的左端点与右端点个数即可。布置一次地雷在左端点处左端点数加1,右端点处右端点数加1。

代码:

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e5+100;
int c[5][maxn];
int n,m;
int lowbit(int x)
{return x&(-x);
}
int sum(int x,int op)
{int res=0;while(x>0){res+=c[op][x];x-=lowbit(x);}return res;
}
void add(int x,int d,int op)
{while(x<=n){c[op][x]+=d;x+=lowbit(x);}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1; i<=m; i++){int q,l,r;scanf("%d%d%d",&q,&l,&r);if(q==1){add(l,1,1);//1代表左端点个数,2代表右端点个数add(r,1,2);}else if(q==2)printf("%d\n",sum(r,1)-sum(l-1,2));}return 0;/*树状数组前缀和的思想。[L,R]之间的地雷种数等于1~R之间的地雷种数(1~R之间左端点的个数)减去1~R之间那些没有在[L,R]之间出现的种数*//*没有布置到[L,R]之间出现的种数就是在1~L-1之间就布置结束的种数,也就是1~L-1之间右端点的个数*/
}

P2184 贪婪大陆(树状数组)相关推荐

  1. 洛谷 P2184 贪婪大陆 解题报告

    P2184 贪婪大陆 题目背景 面对蚂蚁们的疯狂进攻,小\(FF\)的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在 ...

  2. 【洛谷】P2184 贪婪大陆

    题目地址: https://www.luogu.com.cn/problem/P2184 题目背景: 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败--人类被蚂蚁们逼到了Greed ...

  3. 洛谷 P5057 [CQOI2006]简单题(树状数组)

    嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...

  4. Color the ball(HDU1556)树状数组

    每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...

  5. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  6. Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)

    题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...

  7. poj_3067 树状数组

    题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...

  8. hdu 1166 敌兵布阵(树状数组)

    题意:区间和 思路:树状数组 #include<iostream> #include<stdio.h> #include<string.h> using names ...

  9. Equalizing Two Strings 冒泡排序or树状数组

    首先考虑排序后相等 如果排序后相等的话就只考虑reverse长度为2的,所以a或者b排序后存在相邻两个字母相等的话就puts YES,n>26也直接puts YES 不然的话就假设c为a,b排完 ...

  10. Hdu 6534 Chika and Friendly Pairs 莫队算法+树状数组

    题目链接 题意求给区间[L,R]中有少对(i,j)满足i<j且abs(a[i]-a[j])<=k. 首先来说暴力的方法就是离散化,然后用树状数组来维护,但是m次询问,m很大,所以说一定会t ...

最新文章

  1. 给python点颜色青少年学编程_早晨送给自己的句子,句句经典励志!
  2. 爬虫python爬取页面请求_Python网络爬虫第三弹《爬取get请求的页面数据》
  3. WSL的openssh-server使用报错:Could not load host key: /etc/ssh/ssh_host_rsa_key
  4. 解决 - java.lang.OutOfMemoryError: unable to create new native thread
  5. Sudoku Extension UVALive - 4763
  6. 虚拟机Ubuntu 挂载硬盘
  7. iOS精品源码,GHConsole图片浏览器圆形进度条音视频传输连击礼物弹出动画
  8. 【C/C++】内存基础
  9. c#如何在FTP服务器上下载文件夹及子文件夹中的文件
  10. python拟合线性函数_Python线性拟合实现函数与用法示例
  11. 基于docker的redis4.0单机集群搭建
  12. Java 解析Tiff深入研究
  13. 【转自果壳】学习没有“关键期”,现在开始就不晚
  14. 拼多多店铺是如何运营高客单价的商品,拼多多可以买高客单价的商品吗?
  15. 为什么按序发射只有RAW冲突?
  16. CCTV-2《遇见大咖》专访雷军----笔记记录
  17. 从《中国新说唱》AI选邓紫棋开始,娱乐产业的成功再无偶然
  18. 空格键 还是 Tab键?
  19. 1、Socket网络编程之建立Server、Client连接
  20. 7 金属和半导体接触

热门文章

  1. VUE博客模板----FXBLOG
  2. mysql 14 关闭休眠链接
  3. VOT Toolkit环境配置与使用
  4. Gym - 100886D 2015-2016 Petrozavodsk Winter Training Camp, Saratov SU Contest D - Catenary
  5. 宁波实训day1: java web开发常用工具安装
  6. 触动精灵贝塞尔曲线Bezier Curve
  7. educoder——面向对象程序设计java——实验实训——实验二 - 面向对象
  8. 41.朴素贝叶斯Naive Bayes公式推导与理解+求解公园凉鞋问题(借助文氏图)
  9. javascript-原生javascript实现类似节奏大师小游戏
  10. Wechaty|微信小助手(非web|机器人)