房产网站流量排名,平面设计接单攻略电子书,html5 做手机网站,微网站建设完 不知道怎么推广咋办【题目来源】http://xiaoye.ac.cn/problem.php?id2716【题目描述】 有 n 个人要渡河#xff0c;但只有一条小船#xff0c;这条小船一次只能坐下最多两个人#xff0c;并且只有一副船桨。每个人划船的速度不一样#xff0c;如果两个人一起上船#xff0c;由于重量变大2716【题目描述】 有 n 个人要渡河但只有一条小船这条小船一次只能坐下最多两个人并且只有一副船桨。每个人划船的速度不一样如果两个人一起上船由于重量变大划船的速度相当于是划船速度最慢的那个人速度。假设给出每个人单独划船过河所花费的时间 Ti请问所有人都过河的总时间最短的时间【输入格式】 输入两行第一行是一个整数表示要过河的 n 个人。 第二行是 n 个整数按速度从快到慢排序好的每个人划船过河的时间。【输出格式】 输出一行给出所有人过河所花费最短的时间。【输入样例】 4 1 2 5 10【输出样例】 17【算法分析】 ● 将各个过河时间从小到大排序并存在数组 a 中当 n≥4 时过河方案为 方案一最快的和次快的过河然后最快的回来再次慢的和最慢的过河然后次快的回来。时间为 a[1]2*a[2]a[n]。 方案二最快的和最慢的过河然后最快的回来再最快的和次慢的过河然后最快的回来。时间为 2*a[1]a[n-1]a[n]。 根据比较结果将所选方案的时间累加到总时间 s 中并将人数 n 减少 2因为每次循环处理了两个人过河。【算法代码】
#include bits/stdc.h
using namespace std;int main() {int n;cinn;int a[n5];for(int i1; in; i) cina[i];sort(a1,an1);int s0;while(n4) {if(2*a[1]a[n-1]a[n]2*a[2]a[1]a[n]) {s2*a[2]a[1]a[n];} else s2*a[1]a[n-1]a[n];n-2;}if(n3) sa[1]a[2]a[3];else if(n2) sa[2];else sa[1];coutsendl;return 0;
}/*
in:
4
1 2 5 10out:
17
*/【参考文献】https://blog.csdn.net/u013596478/article/details/105016223https://mp.weixin.qq.com/s/a9Y2YTpjjmdv2JzI3EtAVw