codevs 1291 火车线路
某列火车行使在C个城市之间(出发的城市编号为1,结束达到的城市的编号为C),假设该列火车有S个座位,现在有R笔预订票的业务。现在想对这R笔业务进行处理,看哪些预定能满足,哪些不能满足。
一笔预定由O、D、N三个整数组成,表示从起点站O到目标站D需要预定N个座位。一笔预定能满足是指该笔业务在行程范围内有能满足的空座位,否则就不能满足。一笔业务不能拆分,也就是起点和终点站不能更改,预定的座位数目也不能更改。所有的预定需求按给出先后顺序进行处理。
请你编写程序,看那些预定业务能满足,那些不能满足。
输入文件中的第一行为三个整数C、S、R,(1<=c<=60 000, 1<=s<=60 000, 1<=r<=60 000)他们之间用空隔分开。接下来的R行每行为三个整数O、D、N,(1<=o<d<=c, 1<=n<=s),分别表示每一笔预定业务。
对第I笔业务,如果能满足,则在输出文件中的第I行输出“T”,否则输出“N”
4 6 4
1 4 2
1 3 2
2 4 3
1 2 3
T
T
N
N
这是一道有坑的水题
线段树维护区间最小值,
这里不能一边查一边减,有可能前面符合要求,减了,后面却不符合要求
所以要如果判断满足,减,否则不减
坑:::订单从l到r,实际操作的区间应该是[l,r-1],因为目标站就下车了,不占用座位
#include<cstdio>
#include<algorithm>
#define N 60001
using namespace std;
int n,m,opl,opr,w,q;
bool ok;
class tree
{
private:
struct node
{
int l,r,minn,f;
}tr[N*];
public:
void build(int k,int l,int r)
{
tr[k].l=l;tr[k].r=r;
if(l==r)
{
tr[k].minn=m;
return;
}
int mid=l+r>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
tr[k].minn=min(tr[k<<].minn,tr[k<<|].minn);
}
void down(int k)
{
tr[k<<].minn-=tr[k].f;
tr[k<<|].minn-=tr[k].f;
tr[k<<].f+=tr[k].f;
tr[k<<|].f+=tr[k].f;
tr[k].f=;
}
void solve(int k,int g)
{
if(tr[k].l>=opl&&tr[k].r<=opr)
{
if(g==) { if(tr[k].minn<w) ok=true; }
else
{
tr[k].minn-=w;
tr[k].f+=w;
}
return;
}
if(tr[k].f) down(k);
int mid=tr[k].l+tr[k].r>>;
if(opl<=mid) solve(k<<,g);
if(opr>mid) solve(k<<|,g);
if(g==) tr[k].minn=min(tr[k<<].minn,tr[k<<|].minn);
}
}t;
int main()
{
scanf("%d%d%d",&n,&m,&q);
t.build(,,n);
for(int i=;i<=q;i++)
{
ok=false;
scanf("%d%d%d",&opl,&opr,&w);
opr--;
t.solve(,);
if(ok) puts("N");
else
{
puts("T");
t.solve(,);
}
}
return ;
}
codevs 1291 火车线路的更多相关文章
- RMQ训练题 codevs 1291 火车线路 已经搞定
就是线段树维护区间的最小值 但是要注意 本题坑人的地方 是 a到b站 实际上是维护a到b-1 因为b站已经下车了 我勒个去呀 #include<iostream> #include ...
- 习题:codevs 1035 火车停留解题报告
本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...
- CODEVS1291 火车线路
http://codevs.cn/problem/1291/ 题目描述 Description 某列火车行使在C个城市之间(出发的城市编号为1,结束达到的城市的编号为C),假设该列火车有S个座位,现在 ...
- [NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
一开始觉得是网络流..仔细一看应该是最短路,再看数据范围..呵呵不会写...这道题是最大生成树+最近公共祖先.第一次写..表示各种乱.. 因为要求运输货物质量最大,所以路径一定是在最大生成树上的.然后 ...
- CodeVS3958 火车进站
3958 火车进站 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题目描述 Description 火车站内往往设有一些主干线分叉出去的铁路支路 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- iOS 1 到 iOS 10 ,我都快老了
iOS 1:iPhone诞生 虽然很难想像,但初代iPhone在问世时在功能方面其实远远落后于那时的竞争对手,比如Windows Mobile.Palm OS.塞班.甚至是黑莓.它不支持3G.多任务. ...
- ACdream 1103 瑶瑶正式成为CEO(树链剖分+费用流)
Problem Description 瑶瑶(tsyao)是某知名货运公司(顺丰)的老板,这个公司很大,货物运输量极大,因此公司修建了许多交通设施,掌控了一个国家的交通运输. 这个国家有n座城市,公司 ...
- [转] Symbol对象
GIS中的离散实体有三种:点.线.面,在ArcEngine中用三种符号对应表示,分别是:MarkSymbol.LineSymbol和FillSymbol.此外还有TextSymbol用于文字标注,3D ...
随机推荐
- Vue-框架模板的源代码注释
请稍等..吃完饭回来写 吃饭回来了~嘿 ----------------正经分割线----------------- 先看我的目录结构:这是配置好node环境和配置好webpack后,生成的原始框架. ...
- hbase 导入导出、hbase shell 基本命令。
数据导入 ./hbase org.apache.hadoop.hbase.mapreduce.Driver import 表名 数据文件位置hdfs数据文件位置 可以加 前缀 file:/// ...
- 【经验随笔】MYSQL表加锁升级导致数据库访问失败
背景:有一次定位问题发现,在同一个session连接中对MYSQL部分表加锁,导致其它未加锁的表不能访问. 用Spring管理MYSQL数据连接,在多线程访问数据库的情况下容易出问题.一个线程中对部分 ...
- 误操作导致 lvdisplay 命令不存在解决
1.lvdisplay 命令不存在 查看lvm2 包被卸载2.执行 yum install lvm2 命令 发现 yum 被锁 3.删除yum.lock 发现/ 目录只读4.mount -o remo ...
- C# QQ邮箱注册,以及数秒
一. 这是前台需要的东西 <asp:TextBox ID="Textemail" runat="server" CssClass="nonein ...
- FPGA阶段性总结及后续博文计划
之前的博客主要记录了在培训过程中或自己设计小项目时的一些总结,主要涉及通用设计技巧,简单外设接口驱动等.因此内容比较杂,缺乏目的性.考虑设计通用性及提高学习开发效率,后续FPGA设计和博文主要是高带宽 ...
- Python+ Selenium自动化登录腾讯QQ邮箱实例
学习了Python语言一段时间后,在公司的项目里也使用到了python来写测试脚本,一些重复的操作都使用脚本来处理了.大大的提高工作效率,减少了一些手工重复的操作. 以下是使用unittest框架写的 ...
- Loadrunner11不能调用IE8解决方法大全
刚安装了英文版的Loadrunner 11, 用的是IE8, 开始录制时没有启动IE, 试了网上很多的方法,最终解决了问题.总结一般产生问题的原因如下. 1.当你主机上有多个浏览器时,loadrunn ...
- 世界上最好的语言搭建短链接及统计功能(附API代码)
前言 在这个营销的时代,短链接和二维码是企业进行营销中非常重要的工具,不仅仅是缩短了链接,而且还可以通过扩展获得更多的数据,诸如点击数.下载量.来源以及时间等等. 网上搜寻了一下比较有名有U.NU和0 ...
- 处理win7任务栏通知区域图标异常问题
故障现象:安装的某软件比如QQ,应用程序运行图标始终没有在win7任务栏通知区域显示出来,经观查发现win7任务栏通知区域有几个已删除应用的图标出现,应该是有故障了. 故障现象一:已经卸载的程序,还在 ...