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 内存限制: ...
随机推荐
- C - Bear and Five Cards
Description A little bear Limak plays a game. He has five cards. There is one number written on each ...
- Flutter实战视频-移动电商-43.详细页_补充首页跳转到详细页
43.详细页_补充首页跳转到详细页 首页轮播点击到详细页 修改我们轮播这里的代码:SwiperDiy这个类这里的代码 return InkWell( onTap: (){ Application.ro ...
- jQuery 刷新页面
window.location.reload();
- Fitnesse 之 Script Table
在表中每一行代表一个执行脚本. 第一行中的Script关键字表明表格类型,后面紧跟着类名(Fixture)和构造函数中的参数.在一个测试页中如果没有再指定其它Fixture,将一直沿用上一个Fixtu ...
- 让webStorm支持自动监听编译scss文件
前提概要 今日,重装了两波系统,,,之前安装的各种环境都忘光了,重新又踩一次坑的感觉很不舒服,所以记录一下配置自动编译scss一路遇到的坑 一.webstrom run的时候控制台输出的错误中文提示乱 ...
- 运行程序时抛出异常“找不到请求的 .Net Framework Data Provider。可能没有安装。”
方法1 如果系统未安装Oracle Data Provider 请参考方法2 右键单击项目,选择属性,切换到“生成”选项卡,将目标平台改为 Any CPU,并勾选“首选32位” 方法2 安装 Orac ...
- C++构造函数和拷贝构造函数详解
构造函数.析构函数与赋值函数是每个类最基本的函数.它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险. 每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含 ...
- POJ3715【二分匹配-增广】
题意: N个人,有两种人,M对亲密关系,问最少删除几个人达到没有亲密关系. 思路: 最大匹配 = 最小独立集,删掉该人对最大匹配数的影响,如果没有影响,删不删都无所谓,如果有影响贼删除: 类似HDU1 ...
- VR相关学习资源
ptgui全景图制作工具 http://blog.csdn.net/xoyojank mems陀螺误差补偿的算法研究 http://www.docin.com/p-619540171.html 极客工 ...
- unity3d项目文件目录发布后,对应的ios/android应用目录
Unity3d的Resource.AssetBundle与手游动态更新的报告,在这里分享一下,希望能够对各位用Unity的朋友有些许帮助.目录:1.Unity的资源数据加载2.Resource.Str ...