社区讨论
这里是标题
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 条回复,欢迎继续交流。
正在加载回复...