博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1007: [HNOI2008]水平可见直线 半平面交
阅读量:5059 次
发布时间:2019-06-12

本文共 1665 字,大约阅读时间需要 5 分钟。

题目大意:

;

题解

其实就是求每条直线的上半部分的交

所以做裸半平面交即可

#include 
#include
#include
using namespace std;typedef long long ll;inline void read(int &x){ x=0;char ch;bool flag = false; while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true; while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;}inline int cat_max(const int &a,const int &b){return a>b ? a:b;}inline int cat_min(const int &a,const int &b){return a
-eps) return 0; return x > 0 ? 1 : -1;}struct Point{ double x,y; Point(){} Point(const double &a,const double &b){x=a;y=b;} void print(){ printf("%lf %lf\n",x,y); }};struct line{ double k,b; int id;};inline bool cmp(const line &a,const line &b){ return dcmp(a.k-b.k) == 0 ? a.b > b.b : a.k < b.k;}inline bool kmp(const line &a,const line &b){ return a.id < b.id;}inline Point Interion(const line &x,const line &y){ double t = (y.b - x.b)/(x.k - y.k); return Point(t,x.k*t+x.b);}line lines[maxn],sta[maxn];int top = 0;int main(){ int n;read(n); for(int i=1;i<=n;++i){ scanf("%lf%lf",&lines[i].k,&lines[i].b); lines[i].id = i; }sort(lines+1,lines+n+1,cmp); for(int i=1;i<=n;++i){ if(dcmp(lines[i].k-sta[top].k) == 0) continue; while(top >= 2){ Point x = Interion(lines[i],sta[top]); Point y = Interion(sta[top],sta[top-1]); if(dcmp(x.x-y.x) <= 0) --top; else break; }sta[++top] = lines[i]; }sort(sta+1,sta+top+1,kmp); for(int i=1;i<=top;++i) printf("%d ",sta[i].id); getchar();getchar(); return 0;}

转载于:https://www.cnblogs.com/Skyminer/p/6440181.html

你可能感兴趣的文章
JS模块化库seajs体验
查看>>
Android内核sysfs中switch类使用实例
查看>>
POJ2288 Islands and Bridges(TSP:状压DP)
查看>>
POJ3250 Bad Hair Day(单调栈)
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
IOS开发UI篇--UITableView的自定义布局==xib布局
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
查看>>
struts2中<s:form>的应用
查看>>
QML学习笔记之一
查看>>
7NiuYun云存储UploadPicture
查看>>
Window 的引导过程
查看>>
python与 Ajax跨域请求
查看>>
Java实体书写规范
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
六、PowerDesigner 正向工程 和 逆向工程 说明
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>