题目
思路
总体来说代码简单,不难。
关键是对题目的理解,要求是能串成的绳子的最大长度。就是说越早对折的绳子,之后每一回的对折次数都会增加。 所以要让短的先,长的在后。 若按题目给出的顺序,结果会是10。
关于向下取整,直接利用四舍五入round,如果四舍五入结果大于原数,则直接减1。(看了柳神代码……直接用了int型,系统默认向下取整了- 。-)
AC代码
#include<bits/stdc++.h>
using namespace std
;
int main(){
int n
; cin
>>n
;
double a
[n
]={0};
for(int i
=0;i
<n
;i
++){
cin
>>a
[i
];
}
sort(a
,a
+n
);
static double l
=a
[0];
for(int i
=1;i
<n
;i
++){
l
=l
/2+a
[i
]/2;
}
double ans
=round(l
);
if(ans
>l
) ans
-=1;
cout
<<ans
;
return 0;
}