当前位置: 首页 > 编程日记 > 正文

1291 火车线路(区间修改,区间最值)

1291 火车线路

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 大师 Master

题目描述 Description

某列火车行使在C个城市之间(出发的城市编号为1,结束达到的城市的编号为C),假设该列火车有S个座位,现在有R笔预订票的业务。现在想对这R笔业务进行处理,看哪些预定能满足,哪些不能满足。

一笔预定由O、D、N三个整数组成,表示从起点站O到目标站D需要预定N个座位。一笔预定能满足是指该笔业务在行程范围内有能满足的空座位,否则就不能满足。一笔业务不能拆分,也就是起点和终点站不能更改,预定的座位数目也不能更改。所有的预定需求按给出先后顺序进行处理。

请你编写程序,看那些预定业务能满足,那些不能满足。

输入描述 Input Description

输入文件中的第一行为三个整数CSR(1<=c<=60 000, 1<=s<=60 000, 1<=r<=60 000)他们之间用空隔分开。接下来的R行每行为三个整数O、D、N,(1<=o<d<=c, 1<=n<=s),分别表示每一笔预定业务。

输出描述 Output Description

对第I笔业务,如果能满足,则在输出文件的第I行输出“T”,否则输出“N”

样例输入 Sample Input

4 6 4
1 4 2
1 3 2
2 4 3

1 2 3

样例输出 Sample Output

T
T
N

N



分析

原思路:区间查询和,查询区间内有多少空座位与需要的座位比较(比较方法,a站到b站内剩余座位和与a站到b站需要的座位和),但这样做显然不对,如果座位都在最后面的站,而我们不能把在后面需要的座在前面的空缺处找到并使用这些,“一笔业务不能拆分,也就是起点和终点站不能更改”就是这句话。

正确思路:操作显然是可以线段树维护的,注意一个区间[l,r]中r并不需要计算,所以只需要操作[l,r-1]就可以了(到r站就下车了)。我们只需要查询区间的最小值就可以了,因为如果这个区间的最小值都可以满足的话,显然整个区间是可以满足的,线段树功能:区间维护最小值、区间查询最小值。

code

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 #define lson l,m,rt<<1
 5 #define rson m+1,r,rt<<1|1
 6 #define MAXN 60010
 7 
 8 int mn[MAXN<<2];
 9 int col[MAXN<<2];
10 int n,s,t,d;    //n城市,s座位,t订单 
11 void putup(int rt)
12 {
13     mn[rt] = min(mn[rt<<1],mn[rt<<1|1]);
14 }
15 void putdown(int rt)
16 {
17     if (col[rt])
18     {
19         col[rt<<1] += col[rt];
20         col[rt<<1|1] += col[rt];
21         mn[rt<<1] -= col[rt];
22         mn[rt<<1|1] -= col[rt];
23         col[rt] = 0;
24     }
25 }
26 void build(int l,int r,int rt)
27 {
28     if (l==r) 
29     {
30         mn[rt] = s;
31         return ;
32     }
33     int m = (l+r)>>1;
34     build(lson);
35     build(rson);
36     putup(rt);    
37 }
38 void update(int l,int r,int rt,int L,int R,int sc)
39 {
40     if (L<=l && r<=R)
41     {
42         col[rt] += sc;
43         mn[rt] -= sc;
44         return ;
45     }
46     putdown(rt);
47     int m = (l+r)>>1;
48     if (L<=m) update(lson,L,R,sc);
49     if (R>m)  update(rson,L,R,sc);
50     putup(rt);
51 }
52 int query(int l,int r,int rt,int L,int R)
53 {
54     if (L<=l && r<=R)
55     {
56         return mn[rt];
57     }
58     putdown(rt);
59     int ret = s;
60     int m = (l+r)>>1;
61     if (L<=m) ret = min(ret,query(lson,L,R));
62     if (R>m)  ret = min(ret,query(rson,L,R));
63     return ret;
64 }
65 int main()
66 {
67     scanf("%d%d%d",&n,&s,&t);
68     build(1,n,1);
69     for (int a,b,c,i=1; i<=t; ++i)
70     {
71         scanf("%d%d%d",&a,&b,&c);
72         d = query(1,n,1,a,b-1);
73         if (d>=c)
74         {
75             printf("T\n");
76             update(1,n,1,a,b-1,c);
77         }
78         else printf("N\n");
79     }
80     return 0;
81 }

转载于:https://www.cnblogs.com/mjtcn/p/7074564.html

相关文章:

在DataTable中创建计算列

我们知道DataTable是内存中的一个表&#xff0c;可以用DataColumn和DataRow来构造一个DataTable,并且用DataColumn的Expression属性来创建计算列。 (1)创建计算列,该列的值是其它列的计算值.如&#xff1a; DataSet1.Tables("myTable").Columns("Pri…

go 网络请求篇

---恢复内容开始--- 今天特意找了下go的网络请求篇&#xff0c;get请求是ok的&#xff0c;post请求一直不下来&#xff0c;搜索了下&#xff0c;代码都差不多&#xff0c;无法拿到post数据&#xff0c;先整理一篇&#xff0c;亲测可用。 针对post &#xff0c;先来说下post 四种…

jQuery添加DOM节点常用的5种方法

一、内部插入&#xff08;前插入、后插入&#xff09;&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>jQuery添加DOM节点常用的五种方法</title><script type"text/javascript" src"…

未能从程序集 XX加载类型XXX的错误解决方法(借以提醒NHibernate使用者)

这是写.hbm.xml文件最容易犯的错误之一首先,Class的Name属性必须是"完全限定类名,程序集名"这里,例如<class name"ibiz.core.domain.product,ibiz.core">很多人在这里写成"product"或者"product,ibiz.core",这样,没有写上namesp…

正则最常用到的东西

一种组合方式: (.*?)匹配除换行符以外任意字符,匹配模式加上re.S,则开启无敌模式,匹配一切.需要的内容放在括号里面. 两个方法: re.searchgroup()可以找到第几个括号的东西,在确定只有一个内容时,使用re.search会提高效率, 因为re.search找到第一个就不会去找了,而findall会遍…

2005年你看过的,认为比较好的书,请大家一起来评评

我今年看过的书:设计模式 第三遍了..呵呵..有时候莫名其妙的拿到书就很兴奋..充满魔力的书...敏捷软件开发&#xff1a;原则、模式与实践 第二遍了..和第一本一样..同样充满着魔力..Java编程思想 (第二版) 看第二遍了,主要是补充一下以前看不懂的,或者忽略过的技术..比如垃…

从今天开始收集一些经典的算法。

一。用过excel的都知道excel的列编号是这样的&#xff1a; a b c .... z aa ab ac .... az ba bb bc .... yz za zb zc .... zz aaa aab aac .... 分别代表以下编号&#xff1a; 1 2 3 .... 26 27 28 29 .... 52 53 54 55 .... 676 677 678 679 .... 702 703 704 705 .... 请写…

ros ddns

ROS5X-6X脚本&#xff08;10-15分钟执行一次&#xff09;#DDNS本站帐号:global ddnsuser "用户名" #DDNS本站密码:global ddnspass "密码"#ROS系统版本&#xff08;5X,6X&#xff09;:global rver "5X"#DDNS域名(本站添加的子域名):global zho…

apicloud 基础

时间成本 人力成本 很多人想开发app 又碍于时间和金钱成本 。 本色对app 要求不高的话。 混合app 开发是一种很好的方式。 apicloud 就是一种很好的方式。 apicloud 配合aui 和vue 既节省时间 又加大了开发效率。不失为创业公司的选择。 对前端来讲 你需要的学习有几个方…

jQuery中的页面载入($()、ready(fn)、onload)

用jQuery进行页面载入时有集中方式&#xff0c;我们通过例子来说明一下&#xff1a; 第一种&#xff08;通过window.onload()&#xff09;&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><…

性能,安全,集成才是web之道

年底了,又是一年过去了.今年感觉收获颇多..做web开发将近4年时光,期间没有做过任何完整的winApp,一直从事者网络开发.从最初的留言本--新闻--企业网站--论坛--聊天室--大型门户网站--大流量下载网站--网站系统优化,一路走来,不仅仅是技术上的进步,更重要的是思想上的成熟..今天…

站立会议第四天

今天是我们冲刺周期第四天&#xff0c;今天的站立会议主要有以下内容&#xff1a; 1.完成录入菜的数量函数的编写&#xff08;gersort&#xff09; 部分代码如下&#xff1a; void Cmenu::getsort(int SORT) // 录入所点菜的数量 { sortSORT; } cout<<"…

iOS 后台挂起的一些坑

特别说明&#xff1a;后台状态&#xff1a;当前app如果不是作为屏幕中的第一层&#xff0c;呈现显示给用户&#xff0c;那么此时app就是后台状态。锁屏&#xff08;包括&#xff1a;当前应用下锁屏、其他应用下锁屏、桌面锁屏&#xff09; 用户在使用其他应用app2&#xff0c;…

jQuery绑定事件的三种常见方式(bind、one、【change、click、keydown、hover】)

一、bind(type,[data],fn)&#xff1a;为每个匹配元素的特定事件绑定对应的事件处理函数。 也可以同时给一个元素绑定多个事件&#xff0c;我们来看一下例子&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>…

Visual Web Development 2005开发ASP.NET使用小技巧

&#xff08;1&#xff09;改变端口 VWD2005自带有一个内置的web服务器&#xff0c;当我们使用它进行开发ASP.NET时&#xff0c;可以发现它默认使用的端口是动态改变的&#xff0c;要想使用固定端口&#xff0c;步骤如下1&#xff09;在“解决方案资源管理器”里选择你的应用…

java 日志框架的选择Log4j-SLF4j-Logback

Log4j->SLF4j->Logback是同一个人开发的 import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;R…

[WCF] - Odata Service 访问失败,查看具体错误信息的方法

Issue 解决 为 Data Service 配置属性如下&#xff1a;[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults true)]参考 http://salvoz.com/blog/2011/02/18/where-are-the-server-logs/转载于:https://www.cnblogs.com/jinzesudawei/p/7087893.html

Tomcat软件的目录结构、作用

要了解Tomcat的目录结构&#xff0c;首先要知道什么是Tomcat&#xff1f; Tomcat是一个Apache软件基金会Jakarta项目中的核心项目&#xff1b;是一个免费的开放源代码的轻量级Web应用服务器&#xff1b;运行时占用资源小&#xff0c;支持负载均衡与邮件服务等开发应用系统常用功…

这两者需要映射到相同的服务器,从而无法打开项目的解决方法:

1、首先选择文件夹&#xff0c;右键选择共享与安全中的常规&#xff0c;确保其属性是只读&#xff0c;如果还是不能打开项目。则进入第二步。2、到“C:\Documents and Settings\你的用户名\VSWebCache\计算机名\”中, 删除与该项目同名的文件夹。如果还是不行&#xff0c;则进入…

python学习07

Python_learn_day07 1.模块 2.正则表达式 转义字符&#xff1a;反斜杠&#xff08;\&#xff09;&#xff0c;可以把元字符转义为普通字符。 注意&#xff1a;经常用到的正则表达式最好将其编译&#xff0c;因为编译后的文件运行更快。 利用re中的split()方法拆分复杂的字符串&…

一些零碎知识(域名、DNS、浏览器、动态静态页面、web应用系统工作原理)

域名&#xff1a; http://localhost:8080/practice&#xff08;胡写的&#xff0c;用于说明问题&#xff09; http&#xff1a;表明当前请求是http协议&#xff0c;所有的Java Web应用程序都是基于HTTP协议&#xff0c;HTTP全称HyperText Transfer Protocol&#xff0c;意思是…

mybatis简化实现思路

要想实现一个简化的mybatis&#xff0c;主要1.读jdbc配置和mapper.xml 2.jdbc转载于:https://www.cnblogs.com/ljjnbpy/p/9981219.html

76种语言:我爱你

法语&#xff1a;Je taime,Je tadore 德语&#xff1a;Ich liebe Dich 希腊语&#xff1a;Sagapo 犹太语&#xff1a;Ani ohev otach(male or famale),Ani ohevet otcha (male orfamale) 匈牙利&#xff1a;Szeretlek 爱尔兰&#xff1a;taim ingra leat 爱沙尼亚&#xff1a;M…

搜索引擎的实现原理

搜索引擎的实现原理&#xff0c;可以看作四步&#xff1a;从互联网上抓取网页→建立索引数据库→在索引数据库中搜索→对搜索结果进行处理和排序。 从互联网上抓取网页. 利用能够从互联网上自动收集网页的网络蜘蛛程序&#xff0c;自动访问互联网&#xff0c;并沿着任何网页中的…

精通JavaScript--07设计模式:行为型

在本章&#xff0c;我们将继续学习设计模式&#xff0c;着重了解行为型设计模式。我们在第5章所学的创建型设计模式侧重于对象的创建&#xff0c;在第6章所学的结构型设计模式侧重于对象结构&#xff0c;而本章介绍的行为型设计模式则侧重于辅助实现代码库中的多个对象之间的通…

DataX 安装和使用

阿里云介绍&#xff1a; 1. 下载安装包。作为阿里主要的数据传输工具Datax&#xff0c;阿里已经完全开源到github上面了。下载地址&#xff08;https://github.com/alibaba/DataX&#xff09;。 2. 安装环境&#xff1a; JDK(1.6以上&#xff0c;推荐1.6)Python(推荐Python2.6.…

关于Adodb.Stream的使用说明

组件&#xff1a;"Adodb.Stream"有下列方法&#xff1a;Cancel 方法 使用方法如下 Object.Cancel 说明&#xff1a;取消执行挂起的异步 Execute 或 Open 方法的调用。Close 方法 使用方法如下 Object.Close &#xff1a;关闭对像CopyTo 方法…

JSP的执行过程(详解)

要了解JSP的执行过程&#xff0c;首要要搞懂什么是JSP&#xff0c;JSP的全称是Java Server Pages,里面包含html标签、css样式、JavaScript脚本和Java代码。 下面我们来说说JSP的执行过程&#xff1a; JSP执行过程&#xff1a; 当用户通过浏览器访问Tomcat上的JSP页面时&#…

VoIP败家子的游戏

现在VoIP比较火&#xff0c;甚至都引起了电信运营商的强烈关注。VoIP替代长途好象是板上钉钉的事情。实际情况是否如此呢&#xff1f;当然不一定是这样的。VoIP是将企业语音电话业务与网络数据业务合二为一&#xff0c;使之能够在一个网络上实现低成本的IP语音和IP数据服务。其…

K8s简单yaml文件运行例子deployment

kubectl run 创建并运行一个或多个容器镜像。创建一个deployment 或job 来管理容器。kubectl run 语法&#xff1a; $ run NAME --imageimage [--env"keyvalue"] [--portport] [--replicasreplicas] [--dry-runbool] [--overridesinline-json] [--command] -- [COMMA…