专栏文章

题解:AT_abc434_c [ABC434C] Flapping Takahashi

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mimxlstv
此快照首次捕获于
2025/12/01 17:13
3 个月前
此快照最后确认于
2025/12/01 17:13
3 个月前
查看原文
小蒟蒻的第二篇题解。
题目传送门:AtCoder 洛谷(待更新)
我们注意到任务是按照时间顺序给出的,所以依次考虑即可。
注意:判断该组数据答案为 No 之后,一定要把数据全部读入完,否则会影响下一组数据的读入!(本蒟蒻赛时调了 2020 分钟)
下面上代码,结合注释食用更佳。
CPP
#include<bits/stdc++.h>
using namespace std;

void solve(){
    
    bool ok=1;//记录该组测试数据的答案
    int n,h,prev=0;//上一个任务的时间
    cin>>n>>h;
    int l=h,r=h,t,a,b;//l,r记录高度的上下界,初始均为 h
    
    for(int i=1;i<=n;i++){
        cin>>t>>a>>b;
        l-=t-prev;//更新下界
        l=max(l,0);//防止下界爆负数
        r+=t-prev;//更新上界
        if(r<a || l>b) ok=0;//[l,r]与[a,b]无交集,任务不可能完成
        l=max(l,a);
        r=min(r,b);//取[l,r]与[a,b]的交集作为新的上下界
        prev=t;//更新prev
    }
    
    if(ok) cout<<"Yes\n";
    else cout<<"No\n";
    
}

int main(){
    
    int t;//多测
    cin>>t;
    while(t--) solve();
    
    return 0;
}

/*

    Terabyte's code.
    Remember_Me();

*/
最后附上提交记录

评论

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

正在加载评论...