luogu P2184 贪婪大陆
乍一不咋会
╭(╯3╰)╮
把地雷L到R看成一条线段
要求的就是区间内有多少条线段经过
很明显是要用[1,R]内的起点个数-[1,L-1]的终点个数
然后这起点和终点个数可以用简单的差分线段树来维护一下
其实树状数组更适合一些
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define ls rt<<1
#define rs rt<<1|1
using namespace std;
const int maxn = 1e5 + 7;
const int maxm = 4e5 + 7;
int n, m;
struct node {
	int l, r, size;
	int sum;
};
struct seg_tree {
	node e[maxm];
	void pushup(int rt) {
		e[rt].sum = e[ls].sum + e[rs].sum;
	}
	void build(int l, int r, int rt) {
		e[rt].l = l, e[rt].r = r;
		if (l == r) {
			return;
		}
		int mid = (l + r) >> 1;
		build(l, mid, ls);
		build(mid + 1, r, rs);
		pushup(rt);
	}
	void update(int L, int rt) {
		if (e[rt].l == e[rt].r) {
			e[rt].sum++;
			return;
		}
		int mid = (e[rt].l + e[rt].r) >> 1;
		if (L <= mid) update(L, ls);
		else update(L, rs);
		pushup(rt);
	}
	int query(int L, int R, int rt) {
		if (L <= e[rt].l && e[rt].r <= R) {
			return e[rt].sum;
		}
		int mid = (e[rt].l + e[rt].r) >> 1, ans = 0;
		if (L <= mid) ans += query(L, R, ls);
		if (R > mid) ans += query(L, R, rs);
		pushup(rt);
		return ans;
	}
} seg1, seg2;
int read() {
	int x = 0, f = 1; char s = getchar();
	for (; s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;
	for (; s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';
	return x * f;
}
int main() {
	int n = read(), m = read();
	seg1.build(1, n, 1);
	seg2.build(1, n, 1);
	for (; m--;) {
		int tmp = read(), x = read(), y = read();
		if (tmp == 1) {
			seg1.update(x,1);
			seg2.update(y,1);
		} else {
			int ans = seg1.query(1,y,1) - seg2.query(1,x-1,1);
			printf("%d\n", ans);
		}
	}
	return 0;
}
												
											luogu P2184 贪婪大陆的更多相关文章
- [luogu P2184] 贪婪大陆 [树状数组][线段树]
		
题目背景 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海, 前方是变异了的超级蚂蚁. 小 ...
 - P2184 贪婪大陆
		
P2184 贪婪大陆 题目背景 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海, 前 ...
 - 洛谷 P2184 贪婪大陆 解题报告
		
P2184 贪婪大陆 题目背景 面对蚂蚁们的疯狂进攻,小\(FF\)的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在 ...
 - 洛谷P2184 贪婪大陆
		
题目背景 面对蚂蚁们的疯狂进攻,小FF的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在,小FF的后方是一望无际的大海 ...
 - P2184 贪婪大陆 树状数组
		
树状数组帅炸了....又被一道水题轻虐,又被学长指出了一个错误....我太菜了QAQ 开两个树状数组,一个记录左端点,一个记录右端点: 共有cnt(总数) - (<l的右端点数目) - (> ...
 - 洛谷 P2184 贪婪大陆
		
题面 又是一类比较套路的题呢? 假如我们的地雷都表示成 [l[i],r[i]] ,要求[L,R],那么就相当于要求满足 (l[i]<=R && r[i]>=L)的i的个数. ...
 - 洛谷P2184——贪婪大陆
		
传送门:QAQQAQ 题意:给一个长度为$n$的区间,每次可以进行两种操作: 1.在$[l,r]$这个区间里放置一个和之前种类不同的炸弹 2.查询在$[l,r]$区间内有多少种不同种类的炸弹 思路:第 ...
 - luoguP2184 贪婪大陆  题解(树状数组)
		
P2184 贪婪大陆 题目 其实很容易理解就是询问一段区间内有多少段不同的区间 然后再仔细思索一下会发现: 1.只要一个区间的开头在一个节点i的左边,那么这个区间包含在区间1~i中. 2.只要一个区 ...
 - AC日记——贪婪大陆 洛谷 P2184
		
贪婪大陆 思路: 树状数组: 跪烂.. 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 int ...
 
随机推荐
- vue - vue-cli脚手架安装和webpack-simple模板项目生成
			
ue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目. GitHub地址是:https://github.com/vuejs/vue-cli 一.安 ...
 - win7 链接打印机时提示未知的用户名或错误密码
			
使用win7系统时,访问局域网内的计算机 \\ip 要求输入正确用户名和密码,输入用户名和密码后,还是一直提示“未知的用户名或错误密码”. 解决方法: 开始---->运行 打开组策略编辑器 gp ...
 - mysql全局唯一ID生成方案(二)
			
MySQL数据表结构中,一般情况下,都会定义一个具有‘AUTO_INCREMENT’扩展属性的‘ID’字段,以确保数据表的每一条记录都可以用这个ID唯一确定: 随着数据的不断扩张,为了提高数据库查询性 ...
 - linux环境下python的部署
			
linux系统环境自带python2.6,但有时我们项目使用的版本可能是3.x以上等等,此时我们需要在linux中再安装项目所需的python版本,此时就涉及多版本共存问题了,很多同学在安装多个版本P ...
 - Java学习之路-RMI学习
			
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远 ...
 - SQL Server 登录名、服务器角色、用户名和数据库角色 --- 解释
			
一.基本解释 登录名:登录服务器的用户账号: 服务器角色:登录名对该服务器具有的权限,角色分多种的,一个角色可以有多个登录名,如操作系统的系统用户可以有多个. SQL服务器角色 sysadmin ...
 - 前端 HTML 注释
			
单行注释 <!--注释内容--> <!DOCTYPE html> <!-- 页面根节点开始--> <html lang="en"> ...
 - [MySQL5.6] 最近对group commit的小优化
			
[MySQL5.6] 最近对group commit的小优化 http://www.tuicool.com/articles/rEZr2q 最近花了一些时间在做MySQL Group Commit的优 ...
 - [LeetCode] 549. Binary Tree Longest Consecutive Sequence II_ Medium  tag: DFS recursive
			
Given a binary tree, you need to find the length of Longest Consecutive Path in Binary Tree. Especia ...
 - 使用fiddler对手机APP进行抓包
			
在做手机或移动端APP的接口测试时,需要从开发人员那里获取接口文档,接口文档应该包括完整的功能接口.接口请求方式.接口请求URL.接口请求参数.接口返回参数.如果当前项目没有接口文档,则可以使用fid ...