2 条题解

  • 0
    @ 2026-8-9 11:28:12

    假如三条边a,b,c(a≤b≤c) a,b,c(a≤b≤c)能组成三角形,那么它们必须满足 a+b>c。要让三个数无法组成三角形,即 a+b≤ca+b \le c,那么要让 aa 和 bb 尽可能小,cc 尽可能大,所以 aa 和 bb 取数组开头的两个数,cc 取最后一个数。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    int a[50010];
    signed main()
    {
    	int t,n,i;
    	cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		for(i=1;i<=n;i++)
    			cin>>a[i];
    		if(a[1]+a[2]>a[n])
    			cout<<"-1\n";
    		else
    			cout<<"1 2 "<<n<<endl;
    	}
    	return 0;
    }
    

    时间复杂度为 O(n)O(n)。

    • 0
      @ 2026-8-7 21:35:13
      #include<iostream>
      using namespace std;
      
      int main(){
          int t;
          cin>>t;
          while(t--){
              int n,a[50010];
              cin>>n;
              for(int i=1;i<=n;i++){
                  cin>>a[i];
              }
              if(a[1]+a[2]>a[n]){
                  cout<<"-1\n";
              }else{
                  cout<<"1 2 "<<n<<"\n";
              }
          }
      }
      
      • 1

      信息

      ID
      7289
      时间
      1000ms
      内存
      256MiB
      难度
      1
      标签
      递交数
      7
      已通过
      5
      上传者