石家庄外贸网站制作公司网站免费诊断
web/
2025/9/28 20:55:27/
文章来源:
石家庄外贸网站制作公司,网站免费诊断,哈尔滨网站建设教学,商丘免费网站建设开发公司过桥
题目大意#xff1a;
有n个人要过一条桥#xff0c;每个人都有自己的过桥时间#xff0c;一条桥同时只能有2个人过#xff08;过桥时间求较慢的一人#xff09;#xff0c;且要有人拿着手电筒才能过#xff0c;只有一个手电筒#xff0c;且不能扔手电筒#xf…过桥
题目大意
有n个人要过一条桥每个人都有自己的过桥时间一条桥同时只能有2个人过过桥时间求较慢的一人且要有人拿着手电筒才能过只有一个手电筒且不能扔手电筒问最快要多就才能所有人都过桥
原题 解题思路
用f[i]来表示过去了前i个人按过桥时间从小到大排因为同时只能2个人过桥所以要不就是最快的人送别人过去先回来然后和别人一起过去要不就是最快的和次快的送别人过去最快的先回来然后两个人过去然后再让次快的来接最快的
代码
#includecstdio
#includecstring
#includeiostream
#includealgorithm
using namespace std;
int n,a[1005],f[1005];
int main()
{scanf(%d,n);for (int i1;in;i)scanf(%d,a[i]);sort(a1,a1n);f[1]a[1];f[2]a[2];for (int i3;in;i)f[i]min(f[i-1]a[1]a[i],f[i-2]a[1]a[2]a[2]a[i]);//一个人送的就直接加两次//两个人送的就先回来a[1]然后两个人过去a[i]然后次快的再来接最快的a[i]*2printf(%d,f[n]);
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83525.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!