計算幾何(寄蒜幾盒)

2022-08-22 03:33:11 字數 1170 閱讀 6692

題目描述

現在有乙個圓圈,圓圈上有若干個點,請判斷能否在若干個點中選擇三個點兩兩相連組成乙個等邊三角形?

這若干個點在圓圈上按順時針順序分布。

如果可以的話輸出"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:

41 1 2 2

樣例輸入2:

84 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#include

#include

using

namespace

std;

int a[1000005

];int x[1000010

];int

n;bool find(int mis,int left,int

right)

else

else}}

return

false;}

bool check(int

t) }

return

false

;

}int

main()

if(x[n]%3!=0

)else

else

}return0;

}

Luogu P4357K遠點對(寄蒜幾盒)

題目鏈結 考慮旋轉卡殼求出乙個最遠點對之後刪掉其中乙個點,把該點到其餘所有點的距離存進堆裡 最後堆輸出答案。我的 只有在開o2的情況下才不會re。為啥?include include include include include define maxn 300020 using namespace...

計算幾何與計算幾何與

博主這裡曾經學過計算幾何 下文簡稱jj 所以沒有證明或者說明某些演算法,不適合初學者食用 用一道例題及黃學長的 來理解 黃學長 include include include include include include include include include include define...

計算幾何 幾何基礎

這章早在2017年寒假就在培訓的時候由來自清華的hta老師上過了 但是本蒟蒻那時候並不是懂的太多 所以這週ww老師又上了一遍 大概記錄一下 大概就跟高中必修4的平面向量差不多 有上過的應該都會 a x1,y1 b x2,y2 a b x1x2 y1y2 a b a b cos a,b 運用 若a與b...