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的区别.如何创建实例.数据的封装. ...
随机推荐
- 《一个 Go 程序系统线程暴涨的问题》结论
原文地址:https://zhuanlan.zhihu.com/p/22474724 作者的结论没写好,我来说两句.. 结论: Docker swarm自己有个函数,叫setTcpUserTimeou ...
- Log4j的简要概述
读取配置文件的三种使用方式: 1.Java代码:BasicConfigurator.configure() 2.Java特性:键值对解析(properties文件) PropertyConfigura ...
- 周末发现一个BUG,时有时无,一出程序就崩溃,郁闷了好久,终于跟出来来了,记之,提醒自己今后一定规范编写,只要规范,绝对不会出问题
-- :::] cell0 create -- :::] *** Assertion failure /UITableView.m: -- :::] [ Uncaught Exception ] Na ...
- mySql中alter table的使用
1.修改表名:alter table 原表名 rename to 新表名; 2.新增列:alter table 表名 add column 列名 varchar(20) ; 3.删除列:alter t ...
- java 环境配置 及java 历史
知识点概括:1 Java 的历史 2 JDK 的配置 3 文件的编译与执行 ...
- google 版本号49之后chrome的跨域设置
- Longest Increasing Subsequence
很久不写算法了== 写个东西练练手 最长上升子序列 输入n,然后是数组a[ ]的n个元素 输出最长上升子序列的长度 一.最简单的方法复杂度O(n * n) DP[ i ] 是以a[ i ] 为结尾的最 ...
- final关键字
1.final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的.在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再 被扩展,那么就设计为fi ...
- 收藏:Linux系统信息查看命令大全
系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo ...
- ie 8 下post提交提交了两次
擦你吗呀,IE8! 老子写一个登录功能,IE他妈的给我登录了两次,导致权限校验错误,什么他妈的鬼问题,调了两天....fuck,都是泪水. 解决方案:提交按钮加返回值<input type=&q ...