CF1304C Air Conditioner(贪心)

传送门

每次都可以调温度,调高或者调低,所以到当前温度就会有一个区间。也就是每次都求出一个温度变化区间,然后与当前客人的温度区间求一个交集。当没有交集则说明无法满足。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#define P pair<int,int>
#define LL long long
using namespace std;
const int maxn=1e5+10;

struct node
{
	LL t,L,r;
}a[maxn];
bool cmp(node a,node b)
{
	return a.t < b.t;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		LL n,st;
		scanf("%lld%lld",&n,&st);
		for(int i=1;i<=n;i++)
		{
			scanf("%lld%lld%lld",&a[i].t,&a[i].L,&a[i].r);
		}
		sort(a+1,a+n+1,cmp);
		
		LL L=st,r=st;
		LL sum=0;
		int flag=1;
		for(int i=1;i<=n;i++)
		{
			L=L-(a[i].t-sum), r=r+(a[i].t-sum);
			sum=a[i].t;

			if(a[i].L>r || a[i].r<L)
			{
				flag=0;
				break;
			}
			L=max(L,a[i].L),r=min(r,a[i].r);
		}
		if(flag)printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}
这个系统可以设计为一个家电制造商类,包含电视机、空调和冰箱三个子类。以下是类图的设计: ![家电制造商类图](https://img-blog.csdnimg.cn/20211008193201837.png) 其中,家电制造商类包含制造商名称和国家两个属性,以及生产电器的三个方法。电视机、空调和冰箱三个子类继承自家电制造商类,分别包含各自的品牌、型号和价格属性,以及重写的生产电器方法。 以下是代码模拟实现: ```java // 家电制造商类 public class HomeApplianceManufacturer { private String manufacturerName; // 制造商名称 private String country; // 国家 public HomeApplianceManufacturer(String manufacturerName, String country) { this.manufacturerName = manufacturerName; this.country = country; } // 生产电视机 public Television produceTelevision(String brand, String model, double price) { return new Television(manufacturerName, brand, model, price); } // 生产空调 public AirConditioner produceAirConditioner(String brand, String model, double price) { return new AirConditioner(manufacturerName, brand, model, price); } // 生产冰箱 public Refrigeratory produceRefrigeratory(String brand, String model, double price) { return new Refrigeratory(manufacturerName, brand, model, price); } } // 电视机类 public class Television extends HomeApplianceManufacturer { private String brand; // 品牌 private String model; // 型号 private double price; // 价格 public Television(String manufacturerName, String brand, String model, double price) { super(manufacturerName, "China"); this.brand = brand; this.model = model; this.price = price; } } // 空调类 public class AirConditioner extends HomeApplianceManufacturer { private String brand; // 品牌 private String model; // 型号 private double price; // 价格 public AirConditioner(String manufacturerName, String brand, String model, double price) { super(manufacturerName, "China"); this.brand = brand; this.model = model; this.price = price; } } // 冰箱类 public class Refrigeratory extends HomeApplianceManufacturer { private String brand; // 品牌 private String model; // 型号 private double price; // 价格 public Refrigeratory(String manufacturerName, String brand, String model, double price) { super(manufacturerName, "China"); this.brand = brand; this.model = model; this.price = price; } } ``` 相关问题: 1. 这些家电制造商都有哪些产品线? 2. 这些家电制造商都是哪些国家的公司? 3. 家电制造商之间有什么区别?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值