十一选五玩法及奖金:BZOJ 1007, 水平可见直线

吉林省十一选五走势图 www.el2sw.cn 2017-2-10来源:ASP.NET技巧人气:4659

PRoblem

传送门

Mean

参见题目描述。

Analysis

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

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; }

  • 景德镇一道路泥泞坑洼找不到东家 区住建局牵头改造 现已完工 2019-02-18
  • 湖州德清武康街道铆足干劲创佳绩 2019-02-17
  • 包住内力,在不断变化中寻找契机,可出击可借力亦可卸力。 2019-02-16
  • 【家国网聚·网络旺年】以春节的名义,拉近家的距离 2019-02-16
  • 房子都震裂了!中铁八局你停停(图) 2019-02-15
  • 全国人大代表、上海市黄浦区委书记杲云:打造卓越的全球城市核心区 2019-02-15
  • 郭碧婷曝杨幂怀孕趣事,杨幂实力学习台湾腔 2019-02-14
  • 中国加快向知识产权强国转变 2019-02-13
  • “网络党课”第二课 杨禹《为美好生活而奋斗》 2019-02-12
  • 偶像玄幻剧陆续定档暑期 荧屏满溢青春气息 2019-02-11
  • 风眼沙龙:新消费时代二手车市场的机遇和挑战 2019-02-10
  • “相信中华民族伟大复兴的中国梦一定会实现” 2019-02-10
  • 奇点金服获一亿元B轮融资 战略合作发布 2019-02-09
  • 全国首个“呼死你”黑灰产业团伙被摧毁 2019-02-08
  • 保障安全出行 面对“黑车”坚决说不! 2019-02-07
  • 813| 978| 551| 181| 127| 956| 157| 239| 329| 678|