小白月賽4 A 三角形

2021-08-21 11:14:04 字數 791 閱讀 9704

傳送門

題目大意是,給你n個棍子,然後由q次操作,每次操作都是把編號為x的棍子拿走(每次操作都是針對n個棍子進行操作),然後問你此時這n-1根棍子能不能組成三角形,能的話輸出最長的三角形周長,不能的話輸出-1。

思路:要用貪心做,先給n條邊按降序排序,這裡注意要定義乙個結構體,id存這條邊排序前的位置(因為這裡x是排序之前的位置),len存長度。排位序後,從第一長的邊往後面掃,每次取連續的三條邊,如果滿足第一長的邊的長度小於第二長的邊的長度+第三長的邊的長度,則這三條邊的長度就是n-1根棍子組成三角形的最長周長了。如果掃完了,還是沒遇到能構成三角形的三條邊則說明這n-1條棍子不能組成三角形。

#includeusing namespace std;

#define maxn 100005

struct node

a[maxn];

int n,q;

bool cmp(const struct node&a,const struct node&b)

int main()

sort(a+1,a+n+1,cmp);

long long flag,maxx,x;

while(q--)

else

if(a[i+1].id==x)

else

if(a[i+2].id==x)

else

if(a[f].len<(a[g].len+a[h].len))

}printf("%lld\n",maxx);

}return 0;

}

小白月賽4 A 三角形

傳送門 題目大意是,給你n個棍子,然後由q次操作,每次操作都是把編號為x的棍子拿走 每次操作都是針對n個棍子進行操作 然後問你此時這n 1根棍子能不能組成三角形,能的話輸出最長的三角形周長,不能的話輸出 1。思路 要用貪心做,先給n條邊按降序排序,這裡注意要定義乙個結構體,id存這條邊排序前的位置 ...

牛客小白月賽4 三角形

鏈結 沒啥技巧,直接把所有的的三角形周長存下了,然後刪除乙個點 i,他只會影響i i 1 i 2 點組成的三角,刪除這三個三角,然後把新成的三角和最後乙個比較就行了 include using namespace std const int n 2e5 10 define inf 0x3f3f3f3...

LintCode python 小白3 三角形計數

題目 給定乙個整數陣列,在該陣列中,尋找三個數,分別代表三角形三條邊的長度,問,可以尋找到多少組這樣的三個數來組成三角形?樣例 例如,給定陣列 s 返回 3 其中我們可以找到的三個三角形為 給定陣列 s 返回 4 第一次思路 直接遍歷陣列,找出三個數,然後判斷是否滿足三角形條件 滿足三角形的條件有兩...