当前位置: 首页 > 编程日记 > 正文

旋转卡壳——模板(对踵点)

这东西学了我大概两天吧。。其实不应该学这么久的,但是这两天有点小困,然后学习时间被削了很多\(QwQ\)

说几个坑点。

- 对于题目不保证有凸包的情况,要选用左下角的点,而非单纯的最下边的点构造凸包。

- 对于凸包中只有\(1/2\)个点的情况,要注意特殊判断。

算法流程就比较简单了。先构造一个凸包,然后利用对踵点都是逆时针跑(类似于两把尺子卡着凸包转)的原理,每次判断到当前直线距离最远的点,更新当前对踵点即可。

例题 【luogu P1452】Beauty contest

#include <bits/stdc++.h>
#define N 50010
using namespace std;struct point {int x, y;
}arr[N], hull[N];int n, top;int cross (point u1, point u2, point v1, point v2) {return (u2.x - u1.x) * (v2.y - v1.y) - (u2.y - u1.y) * (v2.x - v1.x);
}int point_dis (point u, point v) {return (v.x - u.x) * (v.x - u.x) + (v.y - u.y) * (v.y - u.y);
}bool cmp (point lhs, point rhs) {if (cross (arr[1], lhs, arr[1], rhs) < 0) return false;if (cross (arr[1], lhs, arr[1], rhs) > 0) return true;return point_dis (arr[1], lhs) < point_dis (arr[1], rhs);
}void get_hull () {sort (arr + 2, arr + 1 + n, cmp);hull[++top] = arr[1];for (int i = 2; i <= n; ++i) {while (top > 1 && cross (hull[top - 1], hull[top], hull[top], arr[i]) <= 0) --top;hull[++top] = arr[i];}hull[top + 1] = arr[1];
}int get_ans () {if (top == 1) return 0;if (top == 2) return point_dis (hull[1], hull[2]);int v = 2, ans = 0;for (int u = 1; u <= top; ++u) {while (cross (hull[u], hull[u + 1], hull[u + 1], hull[v]) <=cross (hull[u], hull[u + 1], hull[u + 1], hull[v + 1])) {v = v == top ? 1 : v + 1;}ans = max (ans, max (point_dis (hull[u], hull[v]), point_dis (hull[u + 1], hull[v])));}return ans;
}int main () {cin >> n;for (int i = 1; i <= n; ++i) {cin >> arr[i].x >> arr[i].y;if (arr[i].y < arr[1].y || (arr[i].y == arr[1].y && arr[i].x < arr[1].x)) {swap (arr[i], arr[1]);}}get_hull ();cout << get_ans () << endl;
}

转载于:https://www.cnblogs.com/maomao9173/p/10395499.html

相关文章:

SNMP 协议 OID的使用

为什么80%的码农都做不了架构师&#xff1f;>>> SNMP 协议 OID的使用 SNMP&#xff08;Simple Network Management Protocol简单网络管理&#xff09;协议 是现在网络管理系统&#xff08;NMS&#xff09;监控网络设备状态的协议&#xff0c;是现在网管事实上的标准…

颜色空间YUV简介

YUV概念&#xff1a;YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL&#xff0c;Phase Alternation Line)&#xff0c;是PAL和SECAM模拟彩色电视制式采用的颜色空间。其中的Y、U、V几个字母不是英文单词的组合词&#xff0c;Y代表亮度&#xff0c;其实Y就是图像的灰度值…

基于RNN的NLP机器翻译深度学习课程 | 附实战代码

作者 | 小宋是呢来源 | CSDN博客深度学习用的有一年多了&#xff0c;最近开始NLP自然处理方面的研发。刚好趁着这个机会写一系列 NLP 机器翻译深度学习实战课程。本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署&#xff0c;将包括以下内容&#xff1a;&#xf…

trash-cli设置Linux 回收站

trash-cli 设置 Linux 回收站 trash-cli是一个使用 python 开发的软件包&#xff0c;包含 trash-put、restore-trash、trash-list、trash-empty、trash-rm等命令&#xff0c;我们可以通过这条命令&#xff0c;将文件移动到回收站&#xff0c;或者还原删除了的文件。 trash-cli的…

磁盘有时也不可靠

实验服务器的磁盘是最近买的&#xff0c;当卖家问我要普通的还是高级的&#xff0c; 我选择了普通&#xff0c;现在追悔莫及。今天的分析更加详细。首先发现每次实验&#xff0c;出错的文件都不一样&#xff0c;所以应该不是临界条件的问题。下表总结了出错的位置&#xff0c;原…

从原理到落地,七大维度详解矩阵分解推荐算法

作者 | gongyouliu编辑丨Zandy来源 | 大数据与人工智能 &#xff08; ID: ai-big-data&#xff09;导语&#xff1a;作者在《协同过滤推荐算法》这篇文章中介绍了 user-based 和 item-based 协同过滤算法&#xff0c;这类协同过滤算法是基于邻域的算法(也称为基于内存的协同过…

libyuv库的使用

libyuv是Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。它是跨平台的&#xff0c;可在Windows、Linux、Mac、Android等操作系统&#xff0c;x86、x64、arm架构上进行编译运行&#xff0c;支持SSE、AVX、NEON等SIMD指令加速。下面说一下libyuv在Windows7VS2013 x6…

封装 vue 组件的过程记录

在我们使用vue的开发过程中总会遇到这样的场景&#xff0c;封装自己的业务组件。 封装页面组件前要考虑几个问题&#xff1a;1、该业务组件的使用场景 2、在什么条件下展示一些什么数据&#xff0c;数据类型是什么样的&#xff0c;及长度颜色等 3、如果是通用的内容&#xff0c…

Service的基本组成

Service与Activity的最大区别就是一有界面&#xff0c;一个没有界面。 如果某些程序操作很消耗时间&#xff0c;那么可以将这些程序定义在Service之中&#xff0c;这样就可以完成程序的后台运行&#xff0c; 其实Service就是一个没有界面的Activity&#xff0c;执行跨进程访问也…

BP神经网络公式推导及实现(MNIST)

BP神经网络的基础介绍见&#xff1a;http://blog.csdn.net/fengbingchun/article/details/50274471&#xff0c;这里主要以公式推导为主。BP神经网络又称为误差反向传播网络&#xff0c;其结构如下图。这种网络实质是一种前向无反馈网络&#xff0c;具有结构清晰、易实现、计算…

AI应用落地哪家强?CSDN AI Top 30+案例评选等你来秀!

人工智能历经百年发展&#xff0c;如今迎来发展的黄金时期。目前&#xff0c;AI 技术已涵盖自然语言处理、模式识别、图像识别、数据挖掘、机器学习等领域的研究&#xff0c;在汽车、金融、教育、医疗、安防、零售、家居、文娱、工业等行业获得了令人印象深刻的成果。 在各行业…

安利Mastodon:属于未来的社交网络

我为Mastodon开发了一款安卓客户端&#xff0c;v1.0版本已经发布&#xff0c;欢迎下载使用 源码在这里&#xff1a;https://github.com/shuiRong/Gakki ??? 正文 Mastodon(长毛象)是什么&#xff1f; 是一个免费开源、去中心化、分布式的微博客社交网络&#xff0c;是微博、…

通过案例练习掌握SSH 的整合

1. SSH整合_方案01 ** 整合方案01 Struts2框架 Spring框架 在Spring框架中整合了Hibernate&#xff08;JDBC亦可&#xff09; 一些业务组件&#xff08;Service组件&#xff09;也可以放入Spring框架中迚行管理&#xff08;昨天的例子&#xff09; 1. 请求&#xff0…

tiny-cnn开源库的使用(MNIST)

tiny-cnn是一个基于CNN的开源库&#xff0c;它的License是BSD 3-Clause。作者也一直在维护更新&#xff0c;对进一步掌握CNN很有帮助&#xff0c;因此下面介绍下tiny-cnn在windows7 64bit vs2013的编译及使用。 1. 从https://github.com/nyanp/tiny-cnn下载源码&#xff1…

玩嗨的2亿快手“老铁”和幕后的极致视觉算法

作者 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;创立八年&#xff0c;短视频平台快手目前已经有超过两亿人在每天登陆使用&#xff0c;每天还有超过 1500 万条短视频被制作和上传&#xff0c;每天的累计观看数更是达到 150 亿。拥有如此庞大的用户数&…

lsmod命令详解

基础命令学习目录首页 原文链接&#xff1a;http://blog.sina.com.cn/s/blog_e6b2465d0101fuev.html lsmod——显示已载入系统的模块 lsmod 其实就是list modules的缩写&#xff0c;即 列出所有模块. 功能说明&#xff1a;显示已载入系统的模块。 语法&#xff1a;lsmod 说明&a…

javascript模块化、模块加载器初探

最常见网站的javascript架构可能是这样的&#xff1a; 一个底层框架文件&#xff0c;如jQuery一个网站业务框架文件&#xff0c;包含整站公用业务模块类(如弹框、ajax封装等)多个业务文件&#xff0c;包含每个具体页面有关系的业务代码为了减少一个HTTP请求&#xff0c;我们可能…

tiny-cnn执行过程分析(MNIST)

在http://blog.csdn.net/fengbingchun/article/details/50573841中以MNIST为例对tiny-cnn的使用进行了介绍&#xff0c;下面对其执行过程进行分析&#xff1a;支持两种损失函数&#xff1a;(1)、mean squared error(均方差)&#xff1b;(2)、cross entropy(交叉熵)。在MNIST中使…

关于element的select多选选择器,数据回显的问题

关于element的select多选&#xff0c;数据回显的问题 在工作中遇到这样一个问题&#xff0c;新建表单时用element的select多选以后&#xff0c;在编辑的时候打开表单发现其他数据能正常显示&#xff0c;多选却无法正常回显。在网上找了很多后&#xff0c;终于解决了这个问题&am…

360金融发布Q2财报:净利6.92亿,同比增长114%,大数据与AI加持的科技服务是新亮点?

8月23日&#xff0c;360金融发布未经审计的2019年第二季度业绩报告。财务数据显示&#xff0c;2019年第二季度&#xff0c;360金融实现收入22.27亿元人民币&#xff0c;较2018年二季度9.79亿元增长128%&#xff1b;净利润为6.18亿元&#xff0c;而去年同期为净亏损1.42亿元&…

SPRING3.X JSON 406 和 中文乱码问题

2019独角兽企业重金招聘Python工程师标准>>> 简要 最近使用Spring3.2.3 版本 在使用 JSON message convertion 的时候&#xff0c;老是出现406 返回类型不匹配的问题&#xff0c;去网上google 了一番 也没有一个明确的说法&#xff0c;只能自己去调试。 Maven 依…

VLFeat开源库介绍及在VS2013中的编译

VLFeat是一个开源的计算机视觉算法库&#xff0c;内容主要包括feature detectors、feature extractors、k-means clustering、randomized kd-tree matching、super-pixelization。它是跨平台的&#xff0c;能够应用在Linux、Mac、Windows平台。它的License是BSD。 在VS2013中编…

人工智能写手,好用吗?

作者 | 王树义来源 | 玉树芝兰&#xff08;ID&#xff1a;nkwangshuyi&#xff09;1、印象之前给学生上课的时候&#xff0c;我介绍过利用循环神经网络&#xff0c;仿照作家风格进行创作的机器学习模型。不过&#xff0c;那模型写出来的东西嘛……我的评价是&#xff1a;望之&a…

表单系列之input number总结

各浏览器表现 <input type"number" /> chrome 除数字字符&#xff0c;只可输入e和.IE 除数字字符&#xff0c;其他字符均可输入&#xff0c;无报错Firefox 除数字字符&#xff0c;其他字符均可输入&#xff0c;但会报错移除箭头 //谷歌去除箭头 input::-webki…

Android中Service深入学习

概述 1、当用户在与当前应用程序不同的应用程序时&#xff0c;Service可以继续在后台运行。 2、Service可以让其他组件绑定&#xff0c;以便和它交互并进行进程间通信。 3、Service默认运行在创建它的应用程序的主线程中。 Service的使用主要是因为应用程序里面可能需要长时间地…

卷积神经网络(CNN)的简单实现(MNIST)

卷积神经网络(CNN)的基础介绍见http://blog.csdn.net/fengbingchun/article/details/50529500&#xff0c;这里主要以代码实现为主。CNN是一个多层的神经网络&#xff0c;每层由多个二维平面组成&#xff0c;而每个平面由多个独立神经元组成。以MNIST作为数据库&#xff0c;仿照…

Tensorflow源码解析5 -- 图的边 - Tensor

1 概述 前文两篇文章分别讲解了TensorFlow核心对象Graph&#xff0c;和Graph的节点Operation。Graph另外一大成员&#xff0c;即为其边Tensor。边用来表示计算的数据&#xff0c;它经过上游节点计算后得到&#xff0c;然后传递给下游节点进行运算。本文讲解Graph的边Tensor&…

物联网成网络安全防护新重点!

在昨天的 2019 北京网络安全大会上&#xff0c;工信部负责人表示&#xff0c;我国面向 5G 和车联网将建设网安防护体系&#xff0c;提升监测预警和应急响应能力。其中物联网设备已成为网安防护新重点。为什么工信部会这么重视物联网&#xff1f;物联网开发者的现状又是如何呢&a…

【分享】Java的几个重要词语

Java 是一种解释型语言,由SUN公司开发,基本上属于一个完全面向对象的语言&#xff0c;并且语言的设计仍然以简捷为重点。初学Java肯定会被一些名词给弄晕了&#xff0c;现在集中几个解释一下下。1、JVMJVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&…

64位Ubuntu上编译32位程序操作步骤

1. 确认主机为64位架构的内核&#xff0c;应该输出为adm64&#xff0c;执行&#xff1a;$ dpkg --print-architecture2. 确认打开了多架构支持功能&#xff0c;应该输出为i386&#xff0c;执行&#xff1a;$ dpkg --print-foreign-architectures如果没有&#xff0c;…