青岛定制网站设计公司,网站图片上字体动态怎么做的,赣州seo唐三,网站换主机Safe Passage 题目链接
首先我们想#xff0c;应该让最快与次快的先过河#xff0c;然后让他俩来回的带其他人过河
两种考虑方式其实差不多#xff0c;
一#xff1a;以右岸为基准
这时我们想#xff0c;当最快与次快的过河后#xff0c;我们由两种选择#xff1a; … Safe Passage 题目链接
首先我们想应该让最快与次快的先过河然后让他俩来回的带其他人过河
两种考虑方式其实差不多
一以右岸为基准
这时我们想当最快与次快的过河后我们由两种选择
1让最快的回来然后带一个人回去。
2让最快的人回来然后让最慢于次慢的过去然后次快的过来带着最快的一起回去。
其实也就是一个贪心题
二左岸为基准
1最快的人一个一个送a[0]带着a[i]去去来来每一趟要花(a[i] a[0])的时间。
2两个最大的一起过去先让a[1]带着a[0]过去再让a[1]回来再让a[i]和a[i - 1]过去最后让a[0]回来每一次要花(a[1] a[1] a[i] a[0])的时间。 int f[N];
int a[N];
void solve()
{int n;cin n;for (int i 1; i n; i)cin a[i];sort(a 1, a 1 n);f[1] a[1];f[2] a[2];for (int i 3; i n; i)f[i] min(f[i - 1] a[i] a[1], f[i - 2] a[1] a[i] 2 * a[2]);// 最快的回来然后和当前人一起回去// 最快回来当前和上一个人一起过去次快回来带着最快回去// 每一次花费为慢的那个人cout f[n] endl;
}