拼三角时间限制1秒 空间限制256M网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述给出6根棍子能否在选出3根拼成一个三角形的同时剩下的3根也能组成一个三角形输入描述首先在一行中给出一个t , 1 ≤ t ≤ 10 3 t,1≤t≤10^3t,1≤t≤103代表测试数据的组数接下来t行每行给出6 66个数字代表棍子长度棍子长度为正且小于10 9 10^9109输出描述在一行中输出“ Y e s ” o r “ N o ” “Yes” or “No”“Yes”or“No”示例1输入2 1 1 1 1 1 1 1 2 3 4 5 6输出Yes No解题思路本题核心是暴力枚举分组 三角形合法性判定利用极小的枚举量实现高效求解。6根棍子划分为两组各3根总组合数仅C 6 3 20 C_6^320C6320种完全可以暴力枚举所有方案。通过二进制掩码遍历所有3根棍子的子集将棍子分为两组对每组棍子验证三角形构成条件任意两边之和大于第三边。只要存在一种分组方式让两组都能构成三角形就输出Yes遍历完所有方案都不满足则输出No。算法为常数级运算单组测试用例计算量极小完美适配t ≤ 10 3 t \le 10^3t≤103的数据规模。总结核心逻辑枚举6根棍子的所有33划分方式判断两组是否同时满足三角形条件。关键操作二进制掩码枚举子集、三角形三边关系校验。效率保障常数级暴力枚举无复杂计算极速处理所有测试用例。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N2e55,INF1e18,MOD1e97,base1331;llcheck(ll a,ll b,ll c){returnabcbcaacb;}voidsolve(){vectorllv(6);for(ll i0;i6;i)cinv[i];ll flag0;for(ll i0;i(16);i){ll cnt0;for(ll j0;j6;j)if((1j)i)cnt;if(cnt!3)continue;ll idx10,idx20;vectorlltmp1(3),tmp2(3);for(ll j0;j6;j){if((1j)i)tmp1[idx1]v[j];elsetmp2[idx2]v[j];}if(check(tmp1[0],tmp1[1],tmp1[2])check(tmp2[0],tmp2[1],tmp2[2]))flag1;}if(flag)coutYes\n;elsecoutNo\n;}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);ll tt;cintt;while(tt--)solve();return0;}