网站服务器在哪里,河南整站百度快照优化,wordpress密码重设链接无效,网站开发如何找甲方原题传送器----点我 **题意#xff1a;**n个数字#xff0c;请你给它们排个序围成一个环#xff0c;满足任意一个数两边的数之和大于它本身#xff0c;例如题目给的图#xff08;左图为正确答案#xff09;#xff0c;如果不存在这样的环就输出NO。 难度★ 题解
…原题传送器----点我 **题意**n个数字请你给它们排个序围成一个环满足任意一个数两边的数之和大于它本身例如题目给的图左图为正确答案如果不存在这样的环就输出NO。 难度★ 题解
这题主要靠思路能想到正确的方法就很easy码量不多。 对于这组数我们可以先排升序然后取后三位比较~~为什么往下看~~ 例如后三位是a[n-2],a[n-1],a[n],然后比较a[n]a[n-1]a[n-2]是否成立如果不成立就说明肯定不能成环反手就是输出NO如果成立先将a[n]和a[n-1]输出然后除了a[n-2]的其他数直接输出就行把a[n-2]最后输出 即a[n] a[n-1] a[1] a[2] …a[n-3] 因为我们排过序所以a[1]到a[n-3]都是升序列两边数之和绝对大于它本身光右边的数就大于然后因为我们特判过所以a[n]a[n-1]a[n-2]而且a[n]为最大数a[n-1],a[n-2]都小于它所以也满足这样所有数都满足了。 其实感觉这题也就A题的难度讲的有点啰嗦大致能明白就行。 上代码
#includeiostream
#includecstdio
#includestring
#includealgorithm
using namespace std;
int a[100003];
int main()
{int n;scanf(%d,n);for(int i1;in;i)scanf(%d,a[i]);sort(a1,a1n,lessint());if(a[n](a[n-1]a[n-2])){coutYESendl;couta[n] a[n-1] ;for(int in-3;i1;i--){printf(%d ,a[i]);}couta[n-2];}else coutNO;return 0;
} 写完题解睡觉 0:35