69视频

BZOJ 1007, 水平可见直线_ASP.NET技巧_动态网站制作指南

2/10/2017来源:ASP.NET技巧人气:6544

PRoblem

传送门

Mean

参见题目描述。

Analysis

69视频将直线按斜率排序,然后从小到大依次入栈,入栈时计算该直线与栈顶元素交点。 若该交点在栈顶元素与栈顶下一个元素交点的左侧(或重合),则栈顶元素被完整遮挡,出栈。 反复比较,全部操作完毕后栈中元素即为可见水平直线。

Code

#include<cstdio> #include<cmath> #include<algorithm> using namespace std; const double EPS=1e-10; const int N=50005; int n,top,s[N]; bool f[N]; struct Line{ int id; double a,b; bool Operator < (const Line &B) const { if(fabs(a-B.a)<EPS) return b<B.b; return a<B.a; } }l[N]; double Cross(Line A,Line B){return (B.b-A.b)/(A.a-B.a);} int main(){ scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%lf%lf",&l[i].a,&l[i].b); l[i].id=i; } sort(l,l+n); for(int i=0;i<n;i++){ while(top){ if(fabs(l[s[top]].a-l[i].a)<EPS) top--; else if(top>1 && Cross(l[s[top]],l[i])<=Cross(l[s[top-1]],l[s[top]])) top--; else break; } s[++top]=i; } for(int i=1;i<=top;i++) f[l[s[i]].id]=1; for(int i=0;i<n;i++) if(f[i]) printf("%d ",i+1); return 0; }

大胆人体艺术_se就是色_最新社区 99热_韩国三级在线观影2018_波多野结衣中文字幕 色啪_就去吻_一级黄色录像影片 爱情福利_大西瓜porn视频_亚洲理论在线a中文字幕 人人爱添_在线a片_欧美性狠狠 69视频在线av观看_性爱网_殴美v视频 69视频_sss视频_久热在线播放中文字幕 35pao_婷婷激情网 日韩在线_97资源_中文字幕av 西西人体_色吊丝中文字幕_乱輪中文字幕在线观看

免责声明: 本站资料及图片来源互联网文章-|,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关-|,如用户分享不慎侵犯了您的权益,请联系我们告知,-|我们将做删除处理!