首页 > 其他分享 >借教室

借教室

时间:2024-11-19 18:41:07浏览次数:1  
标签:租借 int 教室 订单 满足 MAXN

[NOIP2012 提高组] 借教室

题目描述

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

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

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

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

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

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

输入格式

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

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

接下来有 \(m\) 行,每行包含三个正整数 \(d_j,s_j,t_j\),表示租借的数量,租借开始、结束分别在第几天。

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

输出格式

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

输出两行,第一行输出一个负整数 \(-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\) 个申请人修改订单。

【数据范围】

对于10%的数据,有\(1≤ n,m≤ 10\);

对于30%的数据,有\(1≤ n,m≤1000\);

对于 70%的数据,有\(1 ≤ n,m ≤ 10^5\);

对于 100%的数据,有\(1 ≤ n,m ≤ 10^6,0 ≤ r_i,d_j≤ 10^9,1 ≤ s_j≤ t_j≤ n\)。

NOIP 2012 提高组 第二天 第二题

2022.2.20 新增一组 hack 数据






题解

根据题目,我们要找出第一个无法完全满足的订单(或订单全部满足)。
我们可与一次比较 每一天 所需教室数可租教室数
而随订单号的增加,所需教室数 在增加,单调有序,可以对此使用二分查找
然后,在其中,所需教室数 仅在 订单所需__区间__中变化,可以用差分数组
但是,如果和上一篇一样写的话(直接用下一个数据减去上一个数据),会代码会变得晦涩。难受死我了
在本题中,我们可以直接对 数组 在订单开始的时候加上相应订单数,在结束的下一天减去订单数即可。详见下文代码。

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;

const int MAXN = 1e6 + 5;
int n, m;//天数,订单量
long long r[MAXN], diff[MAXN];//;//可用于租借的教室数量和其差分
int d[MAXN], s[MAXN], t[MAXN];//租借的数量,租借开始、结束分别在第几天
long long prefix = 0;
int ans;//不能满足的订单号
int cirno(int j);

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++) scanf("%d", &r[i]);
	for (int i = 1; i <= m; i++)scanf("%d%d%d", &d[i], &s[i], &t[i]);


	if (!cirno(m)) { printf("0"); return 0; }//如果所有订单都可以满足,则直接输出0

	int L = 1, R = m;
	while (L <= R) {
		int mid = (L + R) / 2;

	
		if (cirno(mid))//不满足mid个订单,则减小R以减小订单数mid
		{
			R = mid - 1;
			ans = mid;//ans为最小的不能满足的订单数
		}
		else L = mid + 1;//满足mid个订单,则增加mid
	}
	printf("-1\n%d", ans);
	return 0;
}


int cirno(int x)
{
	memset(diff, 0, sizeof(diff));//初始化差分数组

	//计算差分数组
	for (int i = 1; i <= x; i++) {
		diff[s[i]] += d[i];
		diff[t[i] + 1] -= d[i];
	}

	//计算前缀和,即第i天可用于租借的教室数量
	prefix = 0;
	for (int i = 1; i <= n; i++) {
		prefix += diff[i];

		//如果第i天可用于租借的教室数量超过r[i],则不能满足所有订单
		if (prefix > r[i]) return 1;
	}
	return 0;
}

标签:租借,int,教室,订单,满足,MAXN
From: https://www.cnblogs.com/phuzzz/p/18555405

相关文章

  • 【圆圆的日语教室】日语入门第3课-浊音+半浊音+拗音+日常问候
    第三课浊音浊音表浊音发音规则特殊的:じ[ji]:音似“鸡”,j类似国际音标中的[dʒ]ぢ[di]:发音同じ[ji]づ[du]:发音同ず[zu],但是在打字时还是输入各自的罗马字は行:浊化和半浊化拗音每一列大假名相同,都是い[i]段的假名,小假名都是やゆよ。大假名只有辅音发音,即它的元音[i]不起作用。......
  • 计算机毕业设计项目推荐,SSM山西能源学院教室管理系统81671(开题答辩+程序定制+全套文案
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,山西能源学院教室管理系统当然也不能排除在外。山西能源学院教室管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理系......
  • 【圆圆的日语教室】日语入门第1课
    第1课日语的文字文字的组成汉字简体繁体(部分不同于中文中的繁体)日本人自己造的汉字(遵循汉字的象形文字的规则,容易猜测含义)假名平假名柔和(弯弯扭扭)、片假名刚硬(横平竖直)罗马字用于标音文字的变迁总结自kimi-chat日语文字的演变历史是一个漫长而复杂的过程,它包......
  • 【圆圆的日语教室】日语入门第2课
    第二课相似的假名平假名的书写あ(a)的书写第二笔不要太直,它是从草书演变过来的,特点是圆润有弧度第三笔要交叉长得像“安”い(i)的书写第一笔要勾上去う(u)的书写第一笔:点第二笔:起笔不要太平,先往上走再往下拐。え(e)的书写像π第一笔:点第二笔:横上去,折下......
  • 基于springboot的教室预约与管理系统
    收藏关注不迷路!!......
  • ACWING 503. 借教室 二分+前缀和
    题目描述输入格式输出格式数据范围输入样例:432543213324424输出样例:-12题目分析 每个订单都是对第s到t这个区间进行操作,所以可以用差分和前缀来实现对这段区间的快速修改。在1-m个订单中一定会有最后一个能被处理的订单,因此可将1-m分为两个区......
  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,山西能源学院教室管理系统当然也不能排除在外。山西能源学院教室管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理系......
  • jsp高校教室管理系统6irx4
    jsp高校教室管理系统6irx4本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能学生,教师,教室信息,班级信息,课程类型,课程信息,课程表,公告信息,教室申请开题报告内容一、项目背景与意义随着高等教育......
  • 【可答疑】基于51单片机的教室智能照明系统(含仿真、代码、报告、演示视频等)
     ✨哈喽大家好,这里是@每天一杯冰美式oh,985电子本硕,大厂嵌入式在职0.3年,业余时间做做单片机小项目,有需要也可以提供就业指导(免费)~......
  • 中小教室无感扩声(人声补强)问题研究
    问题:一般培训室和普教中小学教室空间有以下典型布局,微型6米*6米,5米*7米;小型8米*8米,7米*9米;中型8米*10米,10米*10米。在上述空间中,老师以正常音量发言,学生是可以听清楚内容的。问题是如果老师长时间说话,很容易嗓子冒烟,后排学生也会因为音量偏小,很容易走神影响成绩。针对上述问......