5th 基礎題 組合三角形

2021-08-02 22:00:25 字數 803 閱讀 4824

桌面上凌亂地擺放著n個木棍,長度分別為,n<=6000,1<=ai<=100,000,000,選擇三個木棍為邊組成三角形,問有多少種不同的組合。三個木棍的不同排列,只能算一種組合。假設ai<=ajak。

第一行,乙個整數n。

第二行n個木棍的長度。

只有乙個數表示能夠組成三角形的組數,最後的結果可能比較大。

7

3 5 7 4 9 5 1

15

難得遇到這種簡單點的題目了, 雖然簡單我還是要寫部落格的-。- 

n=6000,n三次暴力肯定是不行滴,所以先排個序咯,看看有什麼規律

樣例 1 3 4 5 5 7 9

我們發現排完序後只要【a[i]+a[j]>a[k]】 (0所以我們窮舉i和j,k從j+1開始: while(a[i]+a[j]>a[k]&&k<=n)  k++; 

如果存在乙個k恰好使得不滿足上述條件了,那麼說明前面的都滿足,所以加上j-i-1個解。

當j在增加的時候,無需每個j都修改k,k的值可以在原來的基礎上增加,因為i是不變的,j往後推,k也必須往後推

這樣就解決問題了

中心程式:

for(int i=1;i<=n-2;i++)  

全部**如下#include#include#include#include#include#define ll long long

int n,a[6005];

ll ans;

using namespace std;

int main()

}cout<

h5畫三角形 H5 繪製三角形

h5繪製三角形,如下作為自己練習文章,僅作記錄 your browser does not support the html5 canvas tag.var bg document.getelementbyid mycanvas var ctx bg.getcontext 2d 填充三角形 等邊 c...

求大三角形中三角形個數

一道筆試程式設計題要求求乙個大三角形中所有小三角形的個數,大約是下面這種情況 首先想到是的將問題由求邊長為n的三角形個數 求邊長為n 1的三角形個數 求邊長為1的三角形個數 1,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...

程式設計題 尋找三角形

三維空間中有n個點,每個點可能是三種顏色的其中之一,三種顏色分別是紅綠藍,分別用 r g b 表示。現在要找出三個點,並組成乙個三角形,使得這個三角形的面積最大。但是三角形必須滿足 三個點的顏色要麼全部相同,要麼全部不同。輸入描述 首先輸入乙個正整數n三維座標系內的點的個數.n 50 接下來n行,每...