当前位置: 首页 > news >正文

外贸论坛排行榜/网络seo优化平台

外贸论坛排行榜,网络seo优化平台,做美团旅游网站多少钱,wordpress keshop题目大意:给出一些笛卡尔系中的一些直线,问从(0,∞)向下看时能看到哪些直线。思路:半平面交可做,可是显然用不上。类似于求凸包的思想,维护一个栈。先将全部直线依照k值排序。然后挨个压进去,遇到有前一个交…

题目大意:给出一些笛卡尔系中的一些直线,问从(0,+∞)向下看时能看到哪些直线。


思路:半平面交可做,可是显然用不上。

类似于求凸包的思想,维护一个栈。

先将全部直线依照k值排序。然后挨个压进去,遇到有前一个交点被挡住的话就先弹栈。

比較闹心的是去重。我的方法是压栈之前先去重,然后在处理。


CODE:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAX 50010
#define EPS 1e-5
using namespace std;inline bool dcmp(double a,double b);struct Point{double x,y;Point(double _ = 0,double __ = 0):x(_),y(__) {}Point operator +(const Point &a)const {return Point(x + a.x,y + a.y);}Point operator -(const Point &a)const {return Point(x - a.x,y - a.y);}
};
struct Line{double k,b;int _id;bool operator <(const Line &a)const {if(dcmp(k,a.k))	return b < a.b;return k < a.k;}
}line[MAX],_line[MAX];int lines;
int top;
Line *stack[MAX]; 
Point intersection[MAX];bool ans[MAX];inline Point GetIntersection(const Line &l1,const Line &l2);
inline bool Under(const Line &l,const Point &p);int main()
{cin >> lines;for(int i = 1;i <= lines; ++i) {scanf("%lf%lf",&line[i].k,&line[i].b);line[i]._id = i;}sort(line + 1,line + lines + 1);int cnt = 0;for(int i = 1;i <= lines; ++i) {if(dcmp(line[i].k,line[i + 1].k))	continue;_line[++cnt] = line[i];}stack[++top] = &_line[1];stack[++top] = &_line[2];intersection[top - 1] = GetIntersection(_line[1],_line[2]);for(int i = 3;i <= cnt; ++i) {if(i != cnt && _line[i].k == _line[i + 1].k)	continue;while(top > 1 && Under(_line[i],intersection[top - 1]))	--top;stack[++top] = &_line[i];intersection[top - 1] = GetIntersection(*stack[top],*stack[top - 1]);}for(int i = 1;i <= top; ++i)ans[stack[i]->_id] = true;for(int i = 1;i <= lines; ++i)if(ans[i])	printf("%d ",i);return 0;
}inline bool dcmp(double a,double b)
{return fabs(a - b) < EPS;
}inline Point GetIntersection(const Line &l1,const Line &l2)
{Point re;re.x = (l2.b - l1.b) / (l1.k - l2.k);re.y = re.x * l1.k + l1.b;return re;
}inline bool Under(const Line &l,const Point &p)
{if(l.k * p.x + l.b > p.y || dcmp(l.k * p.x + l.b,p.y))	return true;return false;
}


http://www.jmfq.cn/news/5302927.html

相关文章:

  • 用织梦做视频网站/seo推广公司排名
  • 仿做网站可以整站下载器吧/百度推广一年多少钱
  • 万州网站建设/广告宣传网站
  • 简述网站建设主要流程/银川seo
  • 网站的建设费用分为/黄页推广引流
  • 网站建设好之后怎么自己推广/搜索引擎优化哪些方面
  • 中山企业推广网站制作/怎么优化自己网站
  • 网站查询备案信息/菏泽seo
  • 阿里云虚拟主机建站教程/上海网络公司seo
  • 绍兴网站建设公司/保定seo推广公司
  • 好看的网站哪里找/搜索引擎优化排名优化培训
  • 建设企业网站的重要性/一个产品的营销方案
  • 做网站的背景图片格式大小/经典软文广告
  • 大气医院网站源码/百度识图以图搜图
  • 网站建设引领者/爱站网长尾关键词挖掘工具下载
  • 做网站的背景图片要多大/广告免费推广网
  • 网站制作的语言/杭州做seo的公司
  • wordpress 按钮连接在哪里设置/优化大师电脑版官方
  • 做公众号app,网站,app/百度大数据
  • 上海做网站好的公司/珠海seo推广
  • 新疆建设网二级域名网站/厦门百度推广开户
  • 必要网站用什么做的/经典软文范例大全
  • 阿里巴巴做网站多少钱/品牌推广活动方案
  • 怎样进网站空间/福建省人民政府
  • 买个网站多少钱/网络搭建教程
  • wordpress熊掌号百度主动提交/优化大师软件大全
  • 微信网站/dw软件怎么制作网页
  • 金融网站建设多少钱/建立个人网站
  • 北京建网站需要多少钱/百度推广助手
  • 青岛城阳软件网站开发/seo怎样优化网站