vijos 1448 校门外的树 (不是05年普及组那题)
描述
校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……
如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:
K=1,K=1,读入l、r表示在区间[l,r]中种上一种树,每次操作种的树的种类都不同
K=2,读入l,r表示询问l~r之间能见到多少种树
(l,r>0)
格式
输入格式
第一行n,m表示道路总长为n,共有m个操作
接下来m行为m个操作
输出格式
对于每个k=2输出一个答案
样例1
样例输入1
5 4
1 1 3
2 2 5
1 2 4
2 3 5
样例输出1
1
2
限制
1s
提示
范围:20%的数据保证,n,m<=100
60%的数据保证,n <=1000,m<=50000
100%的数据保证,n,m<=50000
来源
dejiyu@CSC WorkGroup
这道题是典型的区间问题
但由于树的种类比较多,直接维护可能会超时
于是就用括号序列来做 。
比方说[2,10] 种树 在2 放一个左括号,10放一个右括号
统计[2,10]内有多少树的话,就找[2,10]内左括号的数量减去[1,2]内右括号的数量
#include <cstring>
#include <cstdio> typedef long long LL;
struct tree
{
LL l,r;
LL zk,yk;
}t[*+];
LL n,m,ans;
void build(LL k,LL l,LL r)
{
t[k].l=l;t[k].r=r;
if(l==r) return;
LL mid=(l+r)>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
}
void ptz(LL l,LL k)
{
if(t[k].l==l&&t[k].r==l) t[k].zk++;
else
{
LL mid=(t[k].l+t[k].r)>>;
if(l>mid) ptz(l,k<<|);
else if(l<=mid) ptz(l,k<<);
t[k].zk=t[k<<].zk+t[k<<|].zk;
}
}
void pty(LL l,LL k)
{
if(t[k].l==l&&t[k].r==l) t[k].yk++;
else
{
LL mid=(t[k].l+t[k].r)>>;
if(l>mid) pty(l,k<<|);
else if(l<=mid) pty(l,k<<);
t[k].yk=t[k<<].yk+t[k<<|].yk;
}
}
LL queryz(LL l,LL r,LL k)
{
if(t[k].l>=l&&t[k].r<=r) return t[k].zk;
LL mid=(t[k].l+t[k].r)>>;
if(r<=mid) return queryz(l,r,k<<);
else if(l>mid) return queryz(l,r,k<<|);
else return queryz(l,mid,k<<)+queryz(mid+,r,k<<|);
}
LL queryy(LL l,LL r,LL k)
{
if(t[k].l>=l&&t[k].r<=r) return t[k].yk;
LL mid=(t[k].l+t[k].r)>>;
if(r<=mid) return queryy(l,r,k<<);
else if(l>mid) return queryy(l,r,k<<|);
else return queryy(l,mid,k<<)+queryy(mid+,r,k<<|);
}
void qr(LL &x)
{
x=;bool f=;
char ch=getchar();
while(ch>''||ch<'')
{
if(ch=='-') f=;
ch=getchar();
}
while(ch>=''&&ch<='')
{
x=x*+(int)ch-;
ch=getchar();
}
x=(f==)?((~x)+):x;
}
int main()
{
qr(n);qr(m);
build(,,n);
for(LL x,y,z;m--;)
{
qr(x);qr(y);qr(z);
if(x==) ptz(y,),pty(z,);
else
{
LL ans=queryz(,z,);
if(y!=)
ans-=queryy(,y-,);
printf("%lld\n",ans);
}
}
return ;
}
vijos 1448 校门外的树 (不是05年普及组那题)的更多相关文章
- vijos 1448 校门外的树 树状数组
描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:K=1,K=1,读入l.r表 ...
- Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K= ...
- Vijos P1103 校门外的树【线段树,模拟】
校门外的树 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……, ...
- vijos P1448 校门外的树
描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的--如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:\(K=1\),读入\(l, ...
- Vijos1448校门外的树 题解
Vijos1448校门外的树 题解 描述: 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现 ...
- Vijos1448 校门外的树 [树状数组]
题目传送门 校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:K= ...
- Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)
题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...
- P1047 校门外的树
P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...
- OpenJudge计算概论-校门外的树
/*======================================================================== 校门外的树 总时间限制: 1000ms 内存限制: ...
随机推荐
- 1.5 sqoop安装及基本使用
一.安装sqoop 1.解压 ##解压 [root@hadoop-senior cdh]# tar zxf sqoop-1.4.5-cdh5.3.6.tar.gz -C /opt/cdh-5.3.6/ ...
- UVa 1660 Cable TV Network (最大流,最小割)
题意:求一个无向图的点连通度. 析:把每个点拆成两个,然后中间连接一个容量为1的边,然后固定一个源点,枚举每个汇点,最小割. 代码如下: #pragma comment(linker, "/ ...
- Jmeter调用JAVA jar包传参
http://blog.csdn.net/xiazdong/article/details/7873767#
- Binder使用示例(转载)
转自:http://blog.csdn.net/new_abc/article/details/8097775
- PostgreSQL 务实应用(二/5)插入冲突
在项目中,有时会动态地按周期(如按月)封存统计数据,通常需要做这样的处理: 以按月封存为例,当月数据到达时,先需要检查该月是否有过记录,有则以更新的方式累加统计数字,无则添加一条记录. 假设我们创建以 ...
- Mac下intellij IDEA新建javaweb项目
intellij IDEA可以说是非常好用的工具,本人用来开发java.比eclipse等好用太多了.谁用谁知道,当然只是开发工具而已,用什么都无所谓.大牛们都用记事本编程呢. 本文帮助新手创建一个j ...
- Apple Mach-O Linker Warning 警告解决办法
此警告解决办法: 项目名字 -> targets -> Build Settings -> search path
- Unity IK(反向运动学)初探
http://blog.csdn.net/myarrow/article/details/44450199 1. 简介 IK与FK对应,正向运动学就是根骨骼带动节点骨骼运动.而反向运动学就是反过来,由 ...
- 各种移动GPU压缩纹理的使用方法
本文系原创整理,欢迎转载,请标明链接 http://www.cnblogs.com/luming1979 有问题欢迎加qq群讨论:366239605 介绍了各种移动设备所使用的GPU,以及各个GPU所 ...
- Mol Cell Proteomics. |彭建祥| 人胃肠道间质瘤亚群蛋白质组图谱
大家好,本周分享的是发表在Molecular & Cellular Proteomics 上的一篇关于人胃肠道间质瘤亚群蛋白质组图谱的文章,题目是Proteomic maps of human ...