社区讨论

0分求助

P14914「QFOI R3」航线交汇参与者 2已保存回复 3

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@mjr9zgz2
此快照首次捕获于
2025/12/29 22:50
2 个月前
此快照最后确认于
2026/01/02 09:35
2 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define ld long double
#define F(i,x,y,z) for(ll i=x;i<=y;i+=z)
#define el "\n"
#define rkc ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
struct node{
	ll s;
	ll e;
	ll h;
	ll v;
};
int main(){
	rkc;
	ll n,d;
	cin>>n>>d;
	vector<node>a(11,{0,0,0,0});
	cin>>a[0].s>>a[0].e>>a[0].h;
	a[0].v=a[0].e-a[0].s;
	F(i,1,10,1){
		cin>>a[i].s>>a[i].e>>a[i].h;
		a[i].v=a[i].e-a[i].s;
	}
	F(i,1,10,1){
		node s1=a[i];
		node s=a[0];
		if(abs(s1.h-s.h)>d){
			cout<<"No\n";
			continue;
		}
		if(s1.v==s.v){
			cout<<(s1.s==s.s?"Always":"No")<<"\n";
			continue;
		}
		ld x=(1.0L*s.s*s1.v-1.0L*s1.s*s.v)/(1.0L*(s1.v-s.v));
		ld s_min=min(1.0L*s.s,1.0L*s.e);
		ld s_max=max(1.0L*s.s,1.0L*s.e);
		ld s1_min=min(1.0L*s1.s,1.0L*s1.e);
		ld s1_max=max(1.0L*s1.s,1.0L*s1.e);
		bool in_s=(x>=s_min-1e-12)&&(x<=s_max+1e-12);
		bool in_s1=(x>=s1_min-1e-12)&&(x<=s1_max+1e-12);
		if(in_s&&in_s1){
			printf("%.12Lf\n",x);
		}else{
			cout<<"No\n";
		}
	}
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...