求助站外题(大量玄关!)
  • 板块学术版
  • 楼主2345A
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/5/3 12:43
  • 上次更新2024/5/3 15:38:07
查看原帖
求助站外题(大量玄关!)
565070
2345A楼主2024/5/3 12:43

题目描述
同时,东区也拥有一家NO.1食堂。食堂非常努力地让学生满意,甚至记住了所有学生喜欢的空调温度范围,现在想通过控制食堂空调的温度来满足所有学生。

食堂的空调有3种状态:关机、供暖和制冷。

当它关闭时,食堂的温度保持不变。当它被加热时,温度在一分钟内上升1。最后,当它冷却时,温度在一分钟内下降1。可以在任意整数分钟内任意多次更改状态,空调一开始是关着的。

每个学生的特征有三个值: -第个学生光顾食堂的时间(以分钟为单位), -他们喜欢的温度范围的下限, -他们喜欢的温度范围的上限。

学生在光顾食堂的瞬间,如果温度在他们喜欢的范围内,就会感到满意。当且仅当第 分钟的温度在 和 (包括)之间时,第 个学生才满意。

给定初始温度、学生的访问时间列表以及他们的首选温度范围,您将帮助东区食堂了解是否有可能满足所有学生,最开始,食堂的起始时间为0。

输入输出格式 输入格式 第一行包含两个整数 和 , ,其中 是学生的数量, 是食堂的初始温度(本题中温度可以突破绝对零度)。

接下来,n行紧随其后。它们的第i行包含三个整数、和 ,其中 是第 个学生访问的时间, 是他们首选温度范围的下限, 是他们首选温度范围的上限,首选的温度包括在内。

到访时间 按时间先后,顺序给出。

输出格式 对于每个测试用例,如果有可能满足所有学生的要求,请打印1。否则,打印0。

输入输出样例
输入样例1

3 0
5 1 2
7 3 5
10 -1 0

输出样例1

1

输入样例2

2 12
5 7 10
10 16 20

输出样例2

0

说明 在第一种情况下,食堂可以通过以下方式控制空调以满足所有学生:

第0分钟,将状态改为加热(温度为0)。
在第二分钟,将状态改为关闭(温度为2)。
在第5分钟,将状态改为加热(温度为2,第一个学生满意)。
在第6分钟,将状态更改为关闭(温度为3)。
在第7分钟,将状态改为制冷(温度为3,第二个学生满意)。
在第10分钟,温度为0,这可以满足最后一位学生的要求。

在第二种情况下,食堂必须让至少一名学生不满意。

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
main()
{
	int n,m;
	cin>>n>>m;
	int a[n+10],b[n+10],c[n+10];
	int ans=0,sj=0,sum=0;
	cin>>a[0]>>b[0]>>c[0];
	ans=b[0];
	sj=a[0];
	sum=c[0];
	if(abs(m-a[0])<=b[0])
	{
		cout<<"0";
		return 0;
	}
	for(int i=1;i<n;i++)
	{
		cin>>a[i]>>b[i]>>c[i];
		if(abs(ans-c[i])>abs(sj-a[i])&&abs(ans-b[i])>abs(sj-a[i]))
		{
			cout<<"0";
			return 0;
		}
		ans=b[i];
		sj=a[i];
		sum=c[i];
	}
	cout<<"1";
	return 0;
}
2024/5/3 12:43
加载中...