题解:CF2053A Tender Carpenter

· · 题解

CF2053B Tender Carpenter

分析

显然,我们将每一个元素都作为一个区间是一种方案。

所以我们只需要找到第二种方案,也就是只要有两个相邻元素的集合或者三个相邻元素的集合中所有选择情况都能够构成三角形即可。

由于三角形的三边是选出来的元素集合中可重复地选择 3 个,所以若有三个相邻元素的集合满足条件,则必定有某个两个相邻元素的集合满足条件,所以我们判断是否有两个相邻元素构成的的集合满足条件即可。

代码很好懂。

AC CODE

#include<bits/stdc++.h>
using namespace std;
int t;
int n,a[205];
int main(){
    cin>>t;
    while(t--){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        bool flag=0;
        for(int i=1;i<n;i++){
            int x=a[i],y=a[i+1];
            if(a[i]+a[i]>a[i+1]&&a[i+1]+a[i+1]>a[i]) flag=1;
        }
        if(!flag) cout<<"NO\n";
        else cout<<"YES\n";
    }
    return 0;
}