30pts求条
  • 板块P1766 液体滴落
  • 楼主ydkxj
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/26 22:50
  • 上次更新2025/7/27 15:43:45
查看原帖
30pts求条
587959
ydkxj楼主2025/7/26 22:50
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
typedef double dl;
struct lth{
	dl xa,xb,ya,yb;
}a[200005];
bool cmp(lth a,lth b){
	return max(a.ya,a.yb)>=max(b.ya,b.yb);
}
bool vis[200005]={0};
int main(){
	int n;
	dl s;
	cin>>n>>s;
	for(int i=1;i<=n;++i)cin>>a[i].xa>>a[i].ya>>a[i].xb>>a[i].yb;
	sort(a+1,a+1+n,cmp);
	dl now=s,yy=1e9+10;
	while(1){
		bool flag=0;
		for(int i=1;i<=n;++i){
			if(vis[i])continue;
			dl yn=(a[i].ya-a[i].yb)/(a[i].xa-a[i].xb)*now+(a[i].yb*a[i].xa-a[i].ya*a[i].xb)/(a[i].xa-a[i].xb);
			if(min(a[i].xa,a[i].xb)<now && max(a[i].xa,a[i].xb)>now && yy>=yn){
				if(a[i].ya>a[i].yb)now=a[i].xb;
				else now=a[i].xa;
				vis[i]=1;
				flag=1;
				yy=min(a[i].ya,a[i].yb);
			}
		}
		if(!flag){
			int ans=now;
			cout<<ans;
			return 0;
		}
	}
	return 0;
}
2025/7/26 22:50
加载中...