总体思路
这道题就是一道贪心题。
对我来说,这道题的关键在于他在说什么(黑人问号???),一开始读了几遍都不知道在讲什么,怎么一根绳子对折后就和另一根套上了?
描述上面确实让人比较迷糊,配图也不是很明了。本来配图我感觉可以做的比较好明白一点,就是一根绳子对折,然后,中间部分卷起来,剩下两头留出两个套子。
灵魂画手上线营业!
做法呢就是上面这个理,既然理解到这一步,接下来的事情就很清楚了。
每次挑绳子时候,先挑短的。
Get it!
避坑指南 notice
1.中间那些存储、计算过程使用的是double类型
2.最后输出要输出整形类型,要类型转换一下
3.如果只有一段绳子,那就不要对折
show you my code
#include<stdio.h> #include<algorithm> using namespace std; double rope[10000]; int main(){ int n; scanf("%d",&n); for(int i=0;i<n;++i) scanf("%lf",&rope[i]); sort(rope,rope+n); double length = rope[0]; for(int i=1;i<n;++i){ length=length/2+rope[i]/2; } printf("%d",int(length)); return 0; }