(有任何问题欢迎留言或私聊 && 欢迎交流讨论哦

题意:传送门

题目描述 
Z市是一座港口城市,来来往往的船只依靠灯塔指引方向。 
在海平面上,存在n个灯塔。每个灯塔可以照亮以它的中心点为中心的90°范围。特別地, 由于特殊限制,每个灯塔照亮范围的角的两条边必须要么与坐标轴平行要么与坐标轴成45°。 由于经费限制,Z市的灯塔只能被点亮一座。你需要求出在这种情况下,是否存在一座灯塔能够照亮Z市的所有灯塔。 
输入描述: 
第一行一个整数T,表示数据组数。 
对于每组数据,第一行一个整数n,表示灯塔的数量。 
接下来n行,每行两个整数xi,yi,表示第i座灯塔的坐标点。 
输出描述: 
如果存在一座灯塔能够照亮Z市的所有灯塔则输出Yes,否则输出No(区分大小写)。

思路:

 首先选取最上面最下面最左边最右边的四个点。 
 然后枚举这四个点,算出其他所有点到这一个点的角度,然后排序。 
 排完序之后看这点角度符不符合题目所说的要求。要么全在一个象限内,要么在y=xy=x和y=−xy=−x俩直线之间。

丫的,之前百度了一份凸包模版,然后一直不对,后来删掉凸包部分就过了,恶心 
 然后在日天学长要了一份凸包模版,这tm才是正确的凸包嘛,用了日天的凸包也过了。凸包模版请看这里:传送门

AC代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MX = 1e6 + ;
const double pi = acos(-1.0);
struct lp {
LL x, y;
} cw[MX],R[MX],op[],ok;
bool cmp1(lp &a, lp &b){
return a.x<b.x;
}
bool cmp2(lp &a, lp &b){
return a.y<b.y;
}
double ans[MX];
int main() {
#ifndef ONLINE_JUDGE
freopen("E://ADpan//in.in", "r", stdin);
//freopen("E://ADpan//out.out", "w", stdout);
#endif
int T, n;
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
for(int i=;i<n;++i){
scanf("%lld%lld",&cw[i].x,&cw[i].y);
}
int flag = ;
sort(cw,cw+n,cmp2);
op[]=cw[],op[]=cw[n-];
sort(cw,cw+n,cmp1);
op[]=cw[],op[]=cw[n-];
double haha = pi/;
for(int t=;t<=;++t){
int tn = ;
ok=op[t];
int res=;
for(int i=;i<n;++i){
if(cw[i].x==ok.x&&cw[i].y==ok.y)continue;
ans[tn++]=atan2(cw[i].y-ok.y*1.0,1.0*cw[i].x-ok.x);
if(ans[tn-]>-pi*/&&ans[tn-]<pi*/)res=;
}
sort(ans,ans+tn);
double mmax=ans[tn-],mmin=ans[];
if(mmax<=-haha)flag=;
if(mmin>=-*pi/&&mmax<=-pi/)flag=;
if(mmin>=-haha&&mmax<=)flag=;
if(mmin>=-pi/&&mmax<=pi/)flag=;
if(mmin>=&&mmax<=haha)flag=;
if(mmin>=pi/&&mmax<=pi*/)flag=;
if(mmin>=haha&&mmax<=pi)flag=;
if(res)flag=;
}
if(flag)printf("Yes\n");
else printf("No\n");
}
return ;
}

Wannafly挑战赛21-A-灯塔-内含正确的凸包模版的更多相关文章

  1. Wannafly挑战赛21:C - 大水题

    链接:Wannafly挑战赛21:C - 大水题 题意: 现在给你N个正整数ai,每个数给出一“好数程度” gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位 ...

  2. 牛客网 Wannafly挑战赛21 灯塔

    Z市是一座港口城市,来来往往的船只依靠灯塔指引方向.在海平面上,存在n个灯塔.每个灯塔可以照亮以它的中心点为中心的90°范围.特別地, 由于特殊限制,每个灯塔照亮范围的角的两条边必须要么与坐标轴平行要 ...

  3. Wannafly挑战赛21 E 未来城市规划

    传送门 题目中给的信息很难直接维护,但是可以考虑一条边对答案的贡献 在以\(x\)为根的子树里,如果一条边\(i\)的权值为\(w_i\),这条边深度更深的端点为\(to_i\),那么这条边对这个子树 ...

  4. Wannafly挑战赛21 C 大水题

    https://www.nowcoder.com/acm/contest/159/C dp #include <cstdio> #include <cstdlib> #incl ...

  5. Wannafly挑战赛21 机器人

    从前在月球上有一个机器人.月球可以看作一个 n*m 的网格图,每个格子有三种可能:空地,障碍,机器人(有且仅有一个),现在地面指挥中心想让机器人在月球上行走,每次可以发送一个指令,为 U-往上走.D- ...

  6. 【Wannafly挑战赛4】F 线路规划 倍增+Kruskal+归并

    [Wannafly挑战赛4]F 线路规划 题目描述 Q国的监察院是一个神秘的组织.这个组织掌握了整个帝国的地下力量,监察着Q国的每一个人.监察院一共有N个成员,每一个成员都有且仅有1个直接上司,而他只 ...

  7. Wannafly挑战赛13 zzf的好矩阵 题解 答案解释

    Wannafly挑战赛13 zzf的好矩阵 题解 文章目录 Wannafly挑战赛13 zzf的好矩阵 题解 分析 结论1 结论2 结论3 C数组对应带子说明 空白长度论述 后续黑色长度论述 能&qu ...

  8. Wannafly挑战赛25游记

    Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...

  9. Wannafly挑战赛27

    Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...

随机推荐

  1. php上传文件(简易版)

    1.前台form表单处添加 enctype="multipart/form-data" 2. //上传文件保存到目录 header("content-type:text/ ...

  2. Delphi ADOQuery的 DisableControls 和 EnableControls方法

    DisableControls方法是在程序修改或后台有刷新记录的时候切断数据组件,如TTABLE.ADOQUERY等等与组件数据源的联系.如果没有切断,数据源中只要一有数据的改动,尤其是批量改动的话, ...

  3. go类c语法

    go类c语法 一般来说,如果一门语言具有类c语法,意味着当你习惯使用其他类c语言例如c.c++.java.javascript和c#,然后你就会发现go语言和它们也类似,至少表面上是.例如,使用&am ...

  4. cookie和session 的初步介绍

    Cookie和Session http协议不保存用户状态(信息) Cookie和Session都是为了能够保存用户信息 Cookie: 本质:保存在浏览器上的键值对 用途:标识当前用户信息 cooki ...

  5. css3布局篇(双飞翼)

    大家看到好多电商网站都见过经典三列布局,它也叫做圣杯布局 ,是Kevin Cornell在2006年提出的一个布局模型概念,这个在国内最早是由淘宝UED的工程师传播开来,在中国也有叫法是双飞翼布局,它 ...

  6. 详解Windows注册表分析取证

    大多数都知道windows系统中有个叫注册表的东西,但却很少有人会去深入的了解它的作用以及如何对它进行操作.然而对于计算机取证人员来说注册表无疑是块巨大的宝藏.通过注册表取证人员能分析出系统发生了什么 ...

  7. contest-20191022

    盘王节 sol 可以发现只有打光御符或完全不打御符两种情况.分开考虑,不打的双指针扫描,用最大的配最小的 打光的可以先贪心的打,然后当成0有无限个, 祝著节 sol 考虑求出最小生成树,记边权和为su ...

  8. Android_开发片段(Part 2)

    1.List和Map知识: 1)如何定义 List<Map<String,Object>> list=new ArrayList<Map<String,Object ...

  9. Java-Class-C:cn.hutool.core.date.DateUtil

    ylbtech-Java-Class-C:cn.hutool.core.date.DateUtil 1.返回顶部   2.返回顶部 1.1. import cn.hutool.core.date.Da ...

  10. Idea 导入项目不能运行

    1.项目结构里面配置sdk,配置output输出目录 2.配置语言等级 配置src源文件目录 配置目录里面添加application,添加main class