社区讨论

这里是标题

P1766液体滴落参与者 2已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mi7ya5uy
此快照首次捕获于
2025/11/21 05:35
4 个月前
此快照最后确认于
2025/11/21 05:35
4 个月前
查看原帖
CPP
#include<iostream>
using namespace std;

struct dot
{
	int x,y;
};

struct line
{
	double k,b;
	int beginx,endx;
	inline int AnswerY(int x){return k*x+b;}
	int InitLine(dot aa,dot bb)
	{
		beginx=aa.x;
		endx=bb.x;
		k=(aa.y-bb.y)*1.0/(aa.x-bb.x);
		b=aa.y*1.0-k*aa.x;
		//cerr<<k<<" "<<b<<endl;
	}
	inline bool IsOnLine(dot a)
	{
		return (a.y>=AnswerY(a.x))&&(a.x>beginx&&a.x<endx);
	}
}Line[10001];
int n;

int input()
{
	dot b,e;
	int s;
	cin>>n>>s;
	for(int i=1;i<=n;i++)
	{
		cin>>b.x>>b.y>>e.x>>e.y;
		if(b.y<e.y)swap(b,e);
		Line[i].InitLine(b,e);
	}
	return s;
}

bool UpdateMax(dot& alpha)
{
	int tm=999999999,tmd=0;
	for(int i=1;i<=n;i++)
	{
		if(Line[i].IsOnLine(alpha)&&Line[i].AnswerY(alpha.x)<tm)
		{
			tm=Line[i].AnswerY(alpha.x);
			tmd=i;
		}
	}
	//cerr<<tm<<tmd;
	if(tm==999999999)return false;
	alpha.x=Line[tmd].endx;
	alpha.y=Line[tmd].AnswerY(Line[tmd].endx);
	return true;
}

int main()
{
	dot alpha;
	alpha.x=input();
	alpha.y=1000000000;
	//UpdateMax(alpha);
	while(UpdateMax(alpha));
	cout<<alpha.x;
}
What's wrong with this program

回复

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

正在加载回复...