洛谷P1083 [NOIP2012 提高组] 借教室

news/2024/11/30 6:02:48/

题目描述

在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。

面对海量租借教室的信息,我们自然希望编程解决这个问题。

我们需要处理接下来 n 天的借教室信息,其中第 i 天学校有 ri​ 个教室可供租借。共有 m 份订单,每份订单用三个正整数描述,分别为 dj​,sj​,tj​,表示某租借者需要从第 sj​ 天到第 tj​ 天租借教室(包括第 sj​ 天和第 tj​ 天),每天需要租借 dj​ 个教室。

我们假定,租借者对教室的大小、地点没有要求。即对于每份订单,我们只需要每天提供 dj​ 个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。

借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。这里的无法满足指从第 sj​ 天到第 tj​ 天中有至少一天剩余的教室数量不足 dj​ 个。

现在我们需要知道,是否会有订单无法完全满足。如果有,需要通知哪一个申请人修改订单。

输入格式

第一行包含两个正整数 n,m,表示天数和订单的数量。

第二行包含 n 个正整数,其中第 i 个数为ri​,表示第 i 天可用于租借的教室数量。

接下来有 m 行,每行包含三个正整数 dj​,sj​,tj​,表示租借的数量,租借开始、结束分别在第几天。

每行相邻的两个数之间均用一个空格隔开。天数与订单均用从 11 开始的整数编号。

输出格式

如果所有订单均可满足,则输出只有一行,包含一个整数 00。否则(订单无法完全满足)

输出两行,第一行输出一个负整数 −1−1,第二行输出需要修改订单的申请人编号。

输入输出样例

输入 #1复制

4 3 
2 5 4 3 
2 1 3 
3 2 4 
4 2 4

输出 #1复制

-1 
2

说明/提示

【输入输出样例说明】

第 1份订单满足后,4天剩余的教室数分别为0,3,2,3。第 2 份订单要求第 2天到第 4 天每天提供3个教室,而第 3 天剩余的教室数为2,因此无法满足。分配停止,通知第2 个申请人修改订单。

【数据范围】

对于 100%的数据,有1≤n,m≤10^6,0≤ri​,dj​≤10^9,1≤sj​≤tj​≤n。

NOIP 2012 提高组 第二天 第二题

2022.2.20 新增一组 hack 数据

题目分析&解题思路 :

这题明显需要用到前缀和的思想,每次进行询问的同时看一下当天的前缀和也即当前需求是否超出ri能够提供的,同时这样的操作所需时间极多,所以我们选择前缀和搭配二分答案的做法

代码:

#include<bits/stdc++.h>
#define _for(a,b) for(int i=a;i<=b;i++)
#define for_(a,b) for(int i=a;i>=b;i--)
#define pii pair<int,int>
#define use int T;cin>>T;while(T--)
typedef long long ll;
using namespace std;
const int N	=1e6+7;
int n,m;
ll v[N],S[N],a[N],t[N],s[N],d[N];
bool check(int x)
{memset(v,0,sizeof v);_for(1,x){v[s[i]]+=d[i];v[t[i]+1]-=d[i]; }_for(1,n) {S[i]=S[i-1]+v[i];if(S[i]>a[i])return false;}return true;
} 
int main()
{cin>>n>>m;_for(1,n)cin>>a[i];_for(1,m)cin>>d[i]>>s[i]>>t[i];ll l=1,r=m; bool st=false;if(check(r))st=true;while(l<r){ll mid=(l+r)/2;if(check(mid))l=mid+1;else r=mid;}if(st)cout<<"0\n"; else cout<<"-1\n"<<l;return 0; 
}


http://www.ppmy.cn/news/882751.html

相关文章

React、Vue3中父组件如何调用子组件内部的方法

React 当父组件需要调用子组件的方法时&#xff0c;可以通过useImperativeHandle钩子函数实现。以下例子是ts实现方式。 在子组件中使用 useImperativeHandle 钩子&#xff0c;将指定的方法暴露给父组件&#xff0c;以便父组件可以通过子组件的引用来调用该方法。 在子组件中…

开始单反生涯

一直都想学习摄影&#xff0c;今天终于决定入手佳能550D。通过网络搜索&#xff0c;电话了解&#xff0c;最终决定到摄苑网买&#xff0c;毕竟网上购买风险大了点。 由于是新手&#xff0c;决定先买套机&#xff08;IS18-55镜头&#xff09;&#xff0c;整机&#xffe5;5450&a…

相机的 高清到底是一个什么东西

高清到底是一个什么东西&#xff1f;可能很多人还只能依稀的知道1080P什么的。当你在广告中看到数字电视机时&#xff0c;总会说支持1080i/1080P这样标准&#xff0c;先不提现在市面上销售的电视机有几个能达到这样一个要求。我们来看看1080i和1080P都代表着什么意思——1080i和…

京东内部 Spring Boot 全解笔记,精髓!

在使用传统的 Spring 去做 Java EE&#xff08;Java Enterprise Edition&#xff09;开发中&#xff0c;大量的 XML 文件存在于项目之中&#xff0c;导致 JavaEE 项目变得慢慢笨重起来&#xff0c;&#xff0c;繁琐的配置和整合第三方框架的配置&#xff0c;导致了开发和部署效…

在阿里云linux上安装MySql数据库

我们先远程连接服务器 然后输入 sudo yum update重新运行一下 然后 sudo yum install mysql-server安装 mysql 服务 其中有两次 y n 选择 都选y就好了 然后 运行 sudo service mysqld start启动MySql 然后 我们查看一下MySql sudo service mysqld status

windows无盘启动技术开发之不同网卡使用同一个启动镜像的问题

by fanxiushu 2023-07-13 转载或引用请注明原作者。 这是一个非常烦的问题&#xff0c;也不是实现技术有多难&#xff0c;而是繁琐。 这也更进一步制约了无盘启动技术朝广泛以及更通用的方向发展&#xff0c;只能用在特定场所。 我所知道的&#xff0c;目前用得最多的地方就是网…

国防科大计算机学院卢凯,国防科技大学实行本硕、硕博连读机制

本报讯国防科技大学年仅26岁的卢凯日前顺利通过博士学位论文答辩&#xff0c;成为该校第一位毕业的硕博连读生。整个学习过程仅用4年6个月&#xff0c;比正常读完硕士、博士研究生至少提前了一年半。像卢凯这样进入人才培养“快车道”的优秀人才&#xff0c;该校还有180多名。 …

小米路由器,192.168.31.1连接不上去,或者连接超时

使用小米路由器&#xff0c;连接不上192.168.31.1的问题或者连接超时。 解决的方法&#xff1a;必须连接上路由器上的wifi&#xff08;默认的wifi名字是Xiaomi-XXXX&#xff09;&#xff0c;虽然当前wifi不一定能用但是如果不连接是访问不了192.168.31.1的。