站外题求助(大量玄关)
  • 板块学术版
  • 楼主2345A
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/3 19:22
  • 上次更新2024/5/3 21:17:23
查看原帖
站外题求助(大量玄关)
565070
2345A楼主2024/5/3 19:22

我实在不会了啊啊啊!

前情概要:
Summer is coming!在没有树荫的西大附中东区,每天面临的都是暴晒与酷暑。 但,还好,豪华的东区教室、实验室、寝室、信竞选手训练的机房都配备了无敌制冷的空调。

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

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

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

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

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

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

输入输出格式
输入格式
第一行包含两个整数 nn和mm (1<=n<=100)(1<=n<=100),−109<=m<=109-10^9<=m<=10^9 ,其中nn 是学生的数量,mm 是食堂的初始温度(本题中温度可以突破绝对零度)。

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

到访时间tit_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,这可以满足最后一位学生的要求。

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

数据范围
3030%的数据:n<=30n<=30
100100%的数据:n<=100n<=100

我的代码: 据测试,答案为一的数据只过了一个

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,m;
	cin>>n>>m;
	int a[n+1]={0},b[n+1]={0},c[n+1]={0};
	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 19:22
加载中...