这若干个点在圆圈上按顺时针顺序分布。
如果可以的话输出"Yes"(不含引号)
不可以的话输出"No"(不含引号)
标签:输出 nbsp 计算 一个 false 分享图片 mat names lse
样例输入1:
4
1 1 2 2
样例输入2:
8
4 2 4 2 2 6 2 2
样例输入1:
Yes
样例输入2:
Yes
#include<cstdio> #include<iostream> #include<cmath> using namespace std; int a[1000005]; int x[1000010]; int n; bool find(int mis,int left,int right){ while(left+1<right){ int mid=(left+right)/2; 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=0;i<=n-2;i++){//因为最少三个点嘛 int p1=x[i]+t; int p2=x[i]+2*t; if(find(p1,0,n)==true&&find(p2,0,n)==true){ return true; } } return false; } int main(){ cin>>n; x[0]=0; for(int i=1;i<=n;i++){ cin>>a[i]; x[i]=x[i-1]+a[i]; } if(x[n]%3!=0){ cout<<"No"; }else{ if(check(x[n]/3)==true){ cout<<"Yes"; }else{ cout<<"No"; } } return 0; }
标签:输出 nbsp 计算 一个 false 分享图片 mat names lse
原文地址:https://www.cnblogs.com/Fylsea/p/10034060.html