信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)
Crossing River - MAOJ智能训练平台 (scmaao.com)
P2638 - Crossing River - CSPOJ
题目链接↑
AC代码↓
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int a[N];
int f(int n)
{
if(n==1)
return a[1];
if(n==2)
return a[2];
if(n==3)
return a[1]+a[2]+a[3];
int t1=a[n]+a[n-1]+2*a[1];
int t2=a[n]+a[1]+2*a[2];
return f(n-2)+min(t1,t2);
}
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
cout<<f(n)<<endl;
}
return 0;
}