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

新app推广去哪里找东莞网站seo推广

新app推广去哪里找,东莞网站seo推广,响应式网页设计的目的是什么,官方网站开发需求描述 矮人们平时有走亲访友的习惯。一天,矮人国要修一条高速公路,矮人们希望他们走亲访友的时候,能够不必穿越高速公路,这样会更安全一些。现在有M个高速公路的修建方案,请你判断这M条高速功能是否能满足矮人们的期望。…

描述

矮人们平时有走亲访友的习惯。一天,矮人国要修一条高速公路,矮人们希望他们走亲访友的时候,能够不必穿越高速公路,这样会更安全一些。现在有M个高速公路的修建方案,请你判断这M条高速功能是否能满足矮人们的期望。也就是说给出平面上的N个点(矮人们的住所位置),对于M条直线(高速公路),依次判断这N个点是否在每条直线的同一侧。是输出GOOD,不是输出BAD。

后来从刘汝佳的书里发现这个算法叫旋转卡壳,专门求对踵点的。


题解

首先可以想出一个凸包模型来,因为求出所有点的凸包后可以判断直线如果穿过凸包,就一定不满足题意。
问题是怎么判断直线是否穿过凸包呢?

如果直线穿过凸包,就一定在凸包两个最远点的中间,最远点可以通过下面的方法找:首先预处理记录下凸包每个边的斜率,再算出直线的斜率,将斜率从小到大排列,假设直线斜率是正的,二分查找第一个大于直线斜率的边,它的起点一定是一个最远点,可以画图验证一下,因为他后面的边斜率比它大,也就相当于走的离凸包中心越来越近。然后把斜率取相反数,再找第一个斜率大于它的边,起点是另一个最远点。

在实现时直接用atan2()函数计算角度不用算斜率。


代码:

总时间耗费: 808ms
总内存耗费: 4 MB

#include<cstdio>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;const int maxn = 100000 + 10;
const double PI = acos(double(-1));int n;struct Point {double x, y;Point(double x=0, double y=0):x(x),y(y) {}
}p[maxn], ch[maxn];typedef Point Vector;Vector operator + (Vector A, Vector B) { return Vector(A.x+B.x, A.y+B.y); }
Vector operator - (Vector A, Vector B) { return Vector(A.x-B.x, A.y-B.y); }
Vector operator * (Vector A, double p) { return Vector(A.x*p, A.y*p); }
Vector operator / (Vector A, double p) { return Vector(A.x/p, A.y/p); }bool operator < (const Vector& a, const Vector& b) {return a.x < b.x || (a.x == b.x && a.y < b.y);
}const double eps = 1e-10;
int dcmp(double x) {if(fabs(x) < eps) return 0; else return x < 0 ? -1 : 1;
}bool dcmp2(const double& a, const double& b) {if(dcmp(b-a) == 1) return 1;return 0;
}bool operator == (const Vector& a, const Vector& b) { return dcmp(a.x-b.x) == 0 && dcmp(a.y-b.y) == 0; 
}double angle(Vector v) { double ret = atan2(v.y, v.x); return ret < -PI/2 ? ret+2*PI : ret; }
double Cross(Vector A, Vector B) { return A.x*B.y - A.y*B.x; }int ConvexHull() {sort(p, p+n);int m = 0;for(int i = 0; i < n; i++) {while(m > 1 && Cross(ch[m-1]-ch[m-2], p[i]-ch[m-2]) <= 0) m--;ch[m++] = p[i];}int k = m;for(int i = n-2; i >= 0; i--) {while(m > k && Cross(ch[m-1]-ch[m-2], p[i]-ch[m-2]) <= 0) m--;ch[m++] = p[i];}if(n > 1) m--;return m;
}double ang[maxn];int main() {scanf("%d", &n);for(int i = 0; i < n; i++) scanf("%lf%lf", &p[i].x, &p[i].y);int c = ConvexHull();for(int i = 0; i < c; i++) ang[i] = angle(ch[i+1]-ch[i]);Point a, b;while(scanf("%lf%lf%lf%lf", &a.x, &a.y, &b.x, &b.y) == 4) {if(n <= 1) printf("GOOD\n"); else {Point u = ch[upper_bound(ang, ang+c, angle(b-a), dcmp2)-ang];Point v = ch[upper_bound(ang, ang+c, angle(a-b), dcmp2)-ang];if(dcmp(Cross(b-a, u-a)*Cross(b-a, v-a)) < eps) printf("BAD\n");else printf("GOOD\n");}}return 0;
}

转载于:https://www.cnblogs.com/wfwbz/p/4282453.html

http://www.lbrq.cn/news/2358757.html

相关文章:

  • wordpress 微信连接seosem是指什么意思
  • 昭通网站seo优化啥都能看的浏览器
  • 安微建设厅网站免费入驻的卖货平台
  • 阿里巴巴国际站入驻通州区网站快速排名方案
  • 做网站的dreamweaver优化疫情防控措施
  • 网站没备案如何做淘宝客企业seo关键字优化
  • 企业网站用什么做爱站网关键词密度
  • 泉州市建设网站百度一下你就知道首页
  • 把网站传到服务器上怎么做手机app软件开发
  • 九龙坡网站建设多少钱月嫂免费政府培训中心
  • 如何做房产网站品牌推广与传播方案
  • 制作游戏的网站河池网站seo
  • 怀化人社网站百度推广优化师
  • 唐山制作手机网站51趣优化网络seo工程师教程
  • 蝙蝠做等级的网站76人vs猛龙
  • 聊城做网站做的不错的网络公司优化大师免费下载安装
  • 做动态网站的用工具淘宝客推广
  • 泗阳做网站公司2023年广州疫情最新消息
  • 安顺建设局网站官网广告网站策划方案
  • 扬州做公司网站百度账号客服24小时人工电话
  • 一家做特卖的网站国内能用的搜索引擎
  • 曲阜公司网站建设价格便宜灰色词快速排名接单
  • 推进政府网站建设今日小说排行榜
  • 哪个网站做推广好软件开发公司排名
  • 专业制作网站电脑搜索引擎营销广告
  • 备案网站地址小吃培训
  • 怎样做农村电商网站新浪体育世界杯
  • 宁国做网站的公司营销战略有哪些内容
  • 网站设计公司互联网广告推广
  • 做网站用html还是python好5118
  • Gradle vs Maven:构建工具世纪对决 —— 像乐高积木与标准模型之间的选择艺术
  • 搭建云途YTM32B1MD1芯片VSCODE+GCC + Nijia + Cmake+Jlink开发环境
  • AI治AI:大语言模型自检新法
  • 已知均数与标准差,如何生成一组正态分布数据?
  • 2025国自然青基、面上资助率,或创新低!
  • 【科研绘图系列】R语言绘制世界地图