标签:board include 优化 多少 space tar turn 限制 for
---恢复内容开始---
一个夜晚一些旅行者想要过桥. 他们只有一个火把. 火把的亮光最多允许两个旅行者同时过桥. 没有火把或者多于2个人则不能过桥.每个旅行者过桥都需要特定的时间,
两个旅行者同时过桥时时间应该算较慢的那个. 我们想知道所有旅行者最少要花费多少时间才能全部过桥?
Example 假如有4个人. 他们分别需要花费6,7,10,15分钟过桥.下图演示了他们如何使用44分钟全部过桥的,但他们能做得更快么?(没有图)
第一行一个数n 表示旅行者的总数, 1 <= n <= 100,000. 接下来n 行表示所有旅行者的过桥时间,时间从小到大排列,每个数不超过1,000,000,000.
输出一个数表示最少过桥时间.
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 long long a[1000005],f[1000005]; 6 int main(){ 7 // freopen("2072.in","r",stdin); 8 // freopen("2072.out","w",stdout); 9 long long n;cin>>n; 10 long long sum=0; 11 for(long long i=1;i<=n;i++) 12 cin>>a[i]; 13 if(n<=2){ 14 cout<<a[n]; 15 return 0; 16 } 17 f[n]=a[n]+a[1]; 18 for(int i=n-1;i>=1;i--) 19 f[i]=min(a[i]+a[1]+f[i+1],a[i+1]+2*a[2]+a[1]+f[i+2]); 20 cout<<f[3]+a[2]; 21 return 0; 22 }
overQAQ
标签:board include 优化 多少 space tar turn 限制 for
原文地址:https://www.cnblogs.com/saionjisekai/p/9691432.html