专栏文章

ABC434C 题解

题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mimy37yh
此快照首次捕获于
2025/12/01 17:26
3 个月前
此快照最后确认于
2025/12/01 17:26
3 个月前
查看原文

分析

对于每一个限制时间点,求出从上一个限制时间点开始走可以能走到的区间,和该次限制区间的交即为该时间下可能出现的位置区间。如果不相交即为无解。
注意初始化,时间 00 下可能出现的区间为 [H,H][H,H]
一定注意判无解的时候还需要输入该组测试数据剩下的限制,并且如果在判断后立即输出的话需要打标记让后面仅输入。就是因为这个赛时卡了我一个多小时,交了 11 次才对。

代码

CPP
#include<iostream>
using namespace std;
//#define int long long
int n,h,nowl,nowr,nowt,t;
signed main(){
	cin >> t;
	while(t--){
		cin >> n >> h;
		nowl=h;nowr=h;nowt=0;
		int flag=0;
		for(int i=1;i<=n;i++){
			int tim,l,r;
			cin >> tim >> l >> r;
			if(flag==1)continue;
			int tr=nowr+(tim-nowt),tl=max(nowl-(tim-nowt),1);
			nowl=max(l,tl);nowr=min(r,tr);
			if(nowl>nowr){
				cout << "No" << endl;
				flag=1;
//				break;
			}
			nowt=tim;
		}
		if(flag==0)cout << "Yes" << endl;
	}
	return 0;
} 

评论

0 条评论,欢迎与作者交流。

正在加载评论...