RMQ训练题 codevs 1291 火车线路 已经搞定
就是线段树维护区间的最小值 但是要注意 本题坑人的地方 是 a到b站 实际上是维护a到b-1 因为b站已经下车了 我勒个去呀
#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
#include<algorithm>
#define lson rt<<1
#define rson rt<<1|1
#define getmid int mid=(l+r)/2
using namespace std;
const int maxn=; int n,m,k,mins[maxn*],tag[maxn*]; void pushdown(int rt)
{
if(tag[rt]!=)
{
mins[rt]+=tag[rt];
tag[lson]+=tag[rt];
tag[rson]+=tag[rt];
tag[rt]=;
}
} void bud(int l,int r,int rt)
{
if(l==r) {
mins[rt]=m;
return;
}
getmid;
bud(l,mid,lson);
bud(mid+,r,rson);
mins[rt]=min(mins[lson],mins[rson]);
} int query(int l,int r,int rt,int a,int b)
{
pushdown(rt);
if(a<=l && b>=r)
{
return mins[rt];
}
getmid;
int ans=<<;
if(a<=mid) ans=query(l,mid,lson,a,b);
if(b>mid) ans=min(ans,query(mid+,r,rson,a,b));
return ans;
} void update(int l,int r,int rt,int a,int b,int c)
{
pushdown(rt);
if(a<=l && b>=r)
{
tag[rt]+=c;
return;
}
getmid;
if(a<=mid) update(l,mid,lson,a,b,c);
if(b>mid) update(mid+,r,rson,a,b,c); mins[rt]=min(mins[lson]+tag[lson],mins[rson]+tag[rson]); } int main()
{
scanf("%d%d%d",&n,&m,&k);
bud(,n,); for(int i=,a,b,c;i<=k;i++)
{
scanf("%d%d%d",&a,&b,&c);
int tt=query(,n,,a,b-);
if(tt>=c)
{
printf("T\n");
update(,n,,a,b-,-c);
}
else
{
printf("N\n");
}
}
return ;
}
RMQ训练题 codevs 1291 火车线路 已经搞定的更多相关文章
- codevs 1291 火车线路
http://codevs.cn/problem/1291/ 题目描述 Description 某列火车行使在C个城市之间(出发的城市编号为1,结束达到的城市的编号为C),假设该列火车有S个座位,现在 ...
- RMQ 训练 之 codevs 1690 开关灯 已经搞定
思路 懒标记法 记stop[rt] 表示 rt这个线段树节点的下方儿子们需要被更新几次 记住是下方 量纲不要乱 否则写的一堆渣代码 我的代码里面black是维护黑灯的数量 其实做烦了 如果是维 ...
- 习题:codevs 1035 火车停留解题报告
本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...
- X-NUCA 2017 web专题赛训练题 阳光总在风雨后和default wp
0X0.前言 X-NUCA 2017来了,想起2016 web专题赛,题目都打不开,希望这次主办方能够搞好点吧!还没开赛,依照惯例会有赛前指导,放一些训练题让CTFer们好感受一下题目. 题目有一大 ...
- hiho1460 rmq模板题
好久没做rmq的题了,今天写了一遍,感觉打表有点像区间dp /* 给定长为n的字符串,要求在字符串中选择k个字符, 选择的子系列字典序最小 因为选择k个字符,那么就是去掉n-k个字符 那么[1,n-k ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- Zeratul的完美区间(线段树||RMQ模板题)
原题大意:原题链接 给定元素无重复数组,查询给定区间内元素是否连续 解体思路:由于无重复元素,所以如果区间内元素连续,则该区间内的最大值和最小值之差应该等于区间长度(r-l) 解法一:线段树(模板题) ...
- POJ 3264:Balanced Lineup(RMQ模板题)
http://poj.org/problem?id=3264 题意:给出n个数,还有q个询问,询问[l,r]区间里面最大值和最小值的差值. 思路:RMQ模板题,开两个数组维护最大值和最小值就行. #i ...
- 日常 java+雅思+训练题1
今天主要学了一些类似c中的一些语句,java也是一样类似的,只有一些点需要稍微注意一下,一些语句是新增的需要知道. 完完全全新学的知识就是class和instance的区别.如何创建实例.数据的封装. ...
随机推荐
- ReportViewer改变图表类型
/// <summary> /// 切换成柱状图 /// </summary> /// <param name="sender"&g ...
- Android DownloadProvider学习
DownloadProvider 简介 DownloadProvider 是Android提供的DownloadManager的增强版,亮点是支持断点下载,提供了“开始下载”,“暂停下载”,“重新下载 ...
- Swift中文基础教程----下标
类,结构和枚举类型都可以通过定义下标来访问一组或者一个序列中的成员元素.通过下标索引就可以方便地检索和设置相应的值,而不需要其他的额外操作.比如你可以通过someArray[index]来访问数组中的 ...
- android沉浸式状态栏设置(4.4以上版本)
其实设置比较简单,我用了小米和htc的几款机型都可以用. 主要代码就是这个(注意要在Activity的setContentView之前调用才行) /** * 开启沉浸式状态栏 * */ public ...
- The Docker学习记录[Doing]
微服务 & Docker 译文:使用Java构建微服务 原文:Building Microservices With Java [编者的话]本文翻译自Dzone Guide to the Ja ...
- Linux IO漫谈
本文为原创,转载请注明:http://www.cnblogs.com/gistao/ Background IO可能是我们接触最频繁的系统调用,比如printf到终端,send content到对端, ...
- css常用公共样式
/*style reset*/ body,ul,p,h1,h2,h3,h4,h5,h6,dl,dd,form,input,textarea,select{padding:0; margin:0;fon ...
- Struts2中通过超链接传参数要注意的问题
写到分页的功能,在传递页码pageNo的时候遇到了参数接收不正确的问题,我本来在action中是定义了一个pageNo字符串参数和一个Page类参数,Page是一个封装了页面要显示的数据集合和页面信息 ...
- C++ operator 的一种不会的用法
自认为对C++比较熟悉,突然看到一些奇怪的代码(在看网上下载的代码Sockets): class SocketAddress { public: virtual ~SocketAddress() {} ...
- Dubbo 与 ImmutableList冲突解决
在Java web实际开发中,常常用到微服务来进行架构分离,今天遇到一特奇怪的问题,Dububo 调用了接口三次,provider端而且没有抛出Exception.consumer却端抛出调用失败的异 ...