题目描述

现在有一个圆圈,圆圈上有若干个点,请判断能否在若干个点中选择三个点两两相连组成一个等边三角形?
这若干个点在圆圈上按顺时针顺序分布。
如果可以的话输出"Yes"(不含引号)
不可以的话输出"No"(不含引号)

输入

第一行一个整数n,表示圆圈上有n个点
第二行n个整数,分别表示第1个点与第2个点之间圆弧的长度、第2个点与第3个点之间圆弧的长度······第n个点与第1个点之间圆弧的长度
3 <= n <= 10^6
1 <= x_i <= 1000 ( 1 <= i <= n)

输出

如果可以组成等边三角形则输出"Yes"(不含引号)
否则输出"No"(不含引号)

样例输入

样例输入1:
4
1 1 2 2 样例输入2:
8
4 2 4 2 2 6 2 2

样例输出

样例输入1:
Yes 样例输入2:
Yes

提示

对于样例2配图:
  
 
 
思路:
可以把圆看成一条线,解法算是二分+前缀和。
如果里面有等边三角形,也就是说圆弧能等分成三份,于是第一个判断条件就是:
1)周长%3==0
那么,三角形的边长就是周长/3,所以三个点假设为a,b,c,三个点到1号点的距离就分别是:xa,xa+t,xa+t+t,其中t=周长/3。
2)查找xa,xa+t,xa+2t是否存在(二分)
 

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int a[];
int x[];
int n;
bool find(int mis,int left,int right){
while(left+<right){
int mid=(left+right)/;
if(x[mid]==mis){
return true;
}else{
if(x[mid]<mis){
left=mid;
}else{
right=mid;
}
}
}
return false;
}
bool check(int t){
for(int i=;i<=n-;i++){//因为最少三个点嘛
int p1=x[i]+t;
int p2=x[i]+*t;
if(find(p1,,n)==true&&find(p2,,n)==true){
return true;
}
}
return false; }
int main(){
cin>>n;
x[]=;
for(int i=;i<=n;i++){
cin>>a[i];
x[i]=x[i-]+a[i];
}
if(x[n]%!=){
cout<<"No";
}else{
if(check(x[n]/)==true){
cout<<"Yes";
}else{
cout<<"No";
}
}
return ;
}

<QluOJ2018NewCode>计算几何(寄蒜几盒)的更多相关文章

  1. 【Luogu】P4357K远点对(寄蒜几盒)

    题目链接 考虑旋转卡壳求出一个最远点对之后删掉其中一个点,把该点到其余所有点的距离存进堆里…… 最后堆输出答案. 我的代码只有在开O2的情况下才不会re.为啥???? #include<cstd ...

  2. Solution -「NOI.AC 省选膜你赛」寄蒜几盒

    题目 题意简述   给定一个含有 \(n\) 个顶点的凸多边形( \(n\) 是偶数),对于每一对相对的边(即中间有 \(\frac{n}2-1\) 条其它边),延长它们以将平面分割为多块,并把包含原 ...

  3. CF1146H Satanic Panic

    题目传送门 Description 给定二维平面内\(n\)个点\((n\leq 300)\),求能组成五角星(不要求正五角星)的五元组个数. Solution 一道小清新的寄蒜几盒计算几何题,代码不 ...

  4. NOIWC2018滚粗记

    Day0 \(THUWC\)刚刚结束..顺利的滚粗了 Day1 整理一下自己咸鱼的心 下午到学校坐车出发 这次队伍浩大THUWC只有4个 又到了雅礼洋湖这个地方 路上突然多了许多有关\(NOI\)的标 ...

  5. 2018.11.26 QLU新生赛部分题解

    问题 L: 寄蒜几盒? 题目描述 现在有一个圆圈,圆圈上有若干个点,请判断能否在若干个点中选择三个点两两相连组成一个等边三角形? 这若干个点在圆圈上按顺时针顺序分布. 如果可以的话输出"Ye ...

  6. 2019学军集训记&PKUWC2020游记

    题解:https://www.cnblogs.com/gmh77/p/12051260.html 集训(×) 被虐(√) Day1 二段考 Day2 绝对不鸽 没那回事 还在路上 其实就是咕了两天 晚 ...

  7. NOIp2018集训test-9-18

    T1.Conjugate 只能选没选过的点,看成如果选了选过的堆的点就不管它继续选.如果第一次选到某一堆的点在第一次选到第一堆的点之前,这一堆对答案就会有1的贡献.那么a[i]有贡献的概率是a[i]和 ...

  8. 2018.11.25 齐鲁工业大学ACM-ICPC迎新赛正式赛题解

    整理人:周翔 A 约数个数(难) 解法1:苗学林  解法2:刘少瑞   解法3:刘凯  解法4:董海峥 B Alice And Bob(易) 解法1:周翔  解法2:苗学林  解法3:刘少瑞 C 黑白 ...

  9. LOJ#6049. 「雅礼集训 2017 Day10」拍苍蝇(计算几何+bitset)

    题面 传送门 题解 首先可以用一个矩形去套这个多边形,那么我们只要枚举这个矩形的左下角就可以枚举完所有多边形的位置了 我们先对每一个\(x\)坐标开一个\(bitset\),表示这个\(x\)坐标里哪 ...

随机推荐

  1. 让PHP文件每隔几秒执行一次

    转自:http://www.blhere.com/966.html 背景是这样的:我需要一段PHP代码去定期对数据库操作,并把结果保存起来.如果方法是用户请求的时候来触发执行这个代码,显然用户的响应时 ...

  2. PHP Laravel系列之环境搭建( VirtualBox+Vagrant+Homestead+系列网址)

    搭建环境从来都是阻挡一门新技能的最致命的硬伤,为了这个环境,我又是花费了半天的时间,各种问题层出不穷,下面基于网上的一些教程(我看到的都多少有些问题) 开始的时候是在实验楼这个平台上开始学习的,不过 ...

  3. 洛谷P3286 [SCOI2014]方伯伯的商场之旅

    题目:洛谷P3286 [SCOI2014]方伯伯的商场之旅 思路 数位DP dalao说这是数位dp水题,果然是我太菜了... 自己是不可能想出来的.这道题在讲课时作为例题,大概听懂了思路,简单复述一 ...

  4. thinkphp5.0 模板包含文件

    在index.html里包含layout.html:{include file=“layout”}它这里是以绝对路径查找所包含的文件,默认是view目录下 在这种情况下,要在在index.html里包 ...

  5. python 源文件编码

  6. HDU-1024_Max Sum Plus Plus

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) P ...

  7. 2019-1-9-WPF-最小的代码使用-DynamicRenderer-书写

    title author date CreateTime categories WPF 最小的代码使用 DynamicRenderer 书写 lindexi 2019-1-9 14:7:26 +080 ...

  8. oracle函数 least(exp1,exp2,exp3,……,expn)

    [功能]返回表达式列表中值最小的一个.如果表达式类型不同,会隐含转换为第一个表达式类型. [参数]exp1……n,各类型表达式 [返回]exp1类型 [示例] SELECT least(10,32,' ...

  9. hdu 5793 A Boring Question(2016第六场多校)

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  10. jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表

    注意:编写此项目时,请先手动编写**.jrxml  或者用IReport生成**.jrxml或**.jasper 注:java导出报表与web项目显示报表方法其实是相同的,只不过有一句代码不同,如下 ...