鏈結 :
** 沒啥技巧,直接把所有的的三角形周長存下了,然後刪除乙個點 i,他只會影響i i+1 i+2 點組成的三角,刪除這三個三角,然後把新成的三角和最後乙個比較就行了
#include
using
namespace
std;
const
int n=2e5+10;
#define inf 0x3f3f3f3f
long
long a[n];
long
long b[n];
long
long c[n];
int main()
sort(b+1,b+n+1);
c[0]=c[1]=c[2]=-1;
for(int i=3;i<=n;i++)
sort(c,c+n+1);
while(q--)
ans=max(ans,(i>2&&i1]1]+b[i-2]?b[i+1]+b[i-1]+b[i-2]:-1ll));
ans=max(ans,((i>1&&i1)&&b[i+2]1]+b[i-1]?b[i+2]+b[i+1]+b[i-1]:-1ll));
long
long w[4];
w[0]=w[1]=w[2]=-1;
for(int j=0;j<3;i++,j++)
if(b[i]1]+b[i-2]&&i<=n&&i>2)
for(int j=n;j>=2;j--)
}for(int j=0;j<3;j++,i--)
}cout
<< max(ans,-1ll)0;}
小白月賽4 A 三角形
傳送門 題目大意是,給你n個棍子,然後由q次操作,每次操作都是把編號為x的棍子拿走 每次操作都是針對n個棍子進行操作 然後問你此時這n 1根棍子能不能組成三角形,能的話輸出最長的三角形周長,不能的話輸出 1。思路 要用貪心做,先給n條邊按降序排序,這裡注意要定義乙個結構體,id存這條邊排序前的位置 ...
小白月賽4 A 三角形
傳送門 題目大意是,給你n個棍子,然後由q次操作,每次操作都是把編號為x的棍子拿走 每次操作都是針對n個棍子進行操作 然後問你此時這n 1根棍子能不能組成三角形,能的話輸出最長的三角形周長,不能的話輸出 1。思路 要用貪心做,先給n條邊按降序排序,這裡注意要定義乙個結構體,id存這條邊排序前的位置 ...
牛客 三角形
題解 三角形的判斷 兩邊之和大於第三邊 要求最大第乙個想到的肯定就是排序了 它題目沒說一定按順序給 但是排完順序 你還得知道這根木條原來是在 所以我選擇了結構體 我是從小到大的 從大到小也行 排完順序以後 從最後乙個開始 加符合題意的三個 這裡指下標不等於拿走的 當加到三根時判斷一下這三根是否滿足三...