【nyoj 47】 过河问题(思维)

过河问题

时间限制:1000 ms  |  内存限制:65535 KB
难度:5
描述

在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。 

输入
第一行是一个整数T(1<=T<=20)表示测试数据的组数
每组测试数据的第一行是一个整数N(1<=N<=1000)表示共有N个人要过河
每组测试数据的第二行是N个整数Si,表示此人过河所需要花时间。(0<Si<=100)
输出
输出所有人都过河需要用的最少时间
样例输入
1
4
1 2 5 10
样例输出
17
来源
POJ
上传者

张云聪


思路:

       在n>3的时候就用前两个小的来带后两个大的(也就是1,2先过,然后1回来,然后n,n-1过,然后2,回来),如果n==3的时候,就1,2过然后1回来,然后1,3过就过来了,如果n==2时,1,2一起过,如果n==1时,直接1过来就行了!

代码:


  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <algorithm>
  4. using namespace std;
  5. int a[1000+5];
  6. int vis[1000+5];
  7. int main()
  8. {
  9. int T;
  10. scanf("%d",&T);
  11. while(T--)
  12. {
  13. int n;
  14. scanf("%d",&n);
  15. for(int i=1;i<=n;i++)
  16. {
  17. scanf("%d",&a[i]);
  18. }
  19. sort(a+1,a+1+n);
  20. int sum=0,k=n;
  21. while(k>3)
  22. {
  23. if(a[k]+a[k-1]+2*a[1]>a[1]+a[k]+2*a[2])
  24. {
  25. sum+=a[1]+a[k]+2*a[2];
  26. k-=2;
  27. }
  28. else
  29. {
  30. sum+=a[k]+a[k-1]+2*a[1];
  31. k-=2;
  32. }
  33. }
  34. if(k==3)
  35. {
  36. sum+=a[1]+a[2]+a[3];
  37. }
  38. if(k==2)
  39. {
  40. sum+=a[2];
  41. }
  42. if(k==1)
  43. {
  44. sum+=a[1];
  45. }
  46. printf("%d\n",sum);
  47. }
  48. return 0;
  49. }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

layui数据表格循环数据给特殊行变颜色遇到的bug

数据表格加载玩数据后&#xff0c;进行颜色区分&#xff0c;然后再进行排序&#xff0c;发现颜色变化有bug 原因&#xff1a; //其中res.data数据并没有变化&#xff0c;只是渲染数据顺序发生了变化&#xff0c;这时候&#xff0c;如此循环便会出现问题 $.each(res.data, fun…

贪心策略--16经典问题总结!

贪心算法编号题目1货郎担问题&#xff1a;货郎担问题&#xff1a;假定有五个城市&#xff0c;已知费用矩阵如下&#xff0c;分别从五个城市出发&#xff0c;然后选取一条费用最小的线路&#xff0c;验证这种算法不能得到最优解。贪心选择&#xff1a;每次选择之前没有走过的费用…

网站前端组织冒泡事件

判断event.stopPropagation();是否可行&#xff0c;不行再使用window.event.cancelBubble true;

【nyist】6 喷水装置(一) (简单的贪心)

喷水装置&#xff08;一&#xff09;时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述现有一块草坪&#xff0c;长为20米&#xff0c;宽为2米&#xff0c;要在横中心线上放置半径为Ri的喷水装置&#xff0c;每个喷水装置的效果都会让以它为…

layui数据表格获取当前页数

$(".layui-laypage-em").next().html()

最大素因子(不是题目!自己写着玩的。。。)

话不多说直接上代码&#xff1a; #include<iostream> #include<cstring> using namespace std; int res[10000]; int cnt; long long su[100000000]; bool isprime[200000000]; void prime() {memset(isprime,1,sizeof(isprime));cnt1;isprime[0]isprime[1]0;for(i…

.net core 5 IIS Api网站部署需要注意(同.net 6)

应用程序池&#xff1a;.net clr 版本&#xff1a;无托管代码 2.安装.NET Core SDK和AspNetCoreModule托管模块 此工具要在官网直接下载即可

【HDU - 2087】 剪花布条(直接模拟 or KMP)

题干&#xff1a; 一块花布条&#xff0c;里面有些图案&#xff0c;另有一块直接可用的小饰条&#xff0c;里面也有一些图案。对于给定的花布条和小饰条&#xff0c;计算一下能从花布条中尽可能剪出几块小饰条来呢&#xff1f; Input输入中含有一些数据&#xff0c;分别是成…

从客户端*****中检测到有潜在危险的 Request.Form 值。

MVC前端调用后台控制器方法报错 解决方案&#xff1a; //在控制器方法前添加以下修饰 [ValidateInput(false)]

【九度oj 1135】【OpenJ_Bailian - 2915】 字符串排序 (水)

题干&#xff1a; 先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束&#xff0c;每个字符串少于一百个字符。如果在输入过程中输入的一个字符串为“stop”&#xff0c;也结束输入。 然后将这输入的该组字符串按每个字符串的长度&#xff0c;由小到…

webapi自宿主设置本地端口使用https协议

首先&#xff0c;你要申请证书&#xff0c;然后导入到证书里面&#xff1a; 具体步骤&#xff1a;运行–MMC命令&#xff0c;进入如下界面进行设置&#xff1a; 一直点下一步直到完成&#xff0c;然后将证书导入到个人里面 这个时候进入cmd程序运行如下命令&#xff1a; /…

C# linq Expression left join如何使用

eg&#xff1a; 注意&#xff1a;on 前后要保持字段名一致 var bleftQuery from f in bFamiliesjoin a in bAudits on new{Idf.Id,DCYIdf.ModifyID} equals new{Ida.HealthFamilyId,a.DCYId} into nafrom a in na.DefaultIfEmpty()select new FamilyWithAudit(){Id f.Id,Sea…

第九届(2018)蓝桥杯 山东省赛解题报告(题目+分析+代码)

1标题&#xff1a;第几天 2000年的1月1日&#xff0c;是那一年的第1天。那么&#xff0c;2000年的5月4日&#xff0c;是那一年的第几天&#xff1f; 注意&#xff1a;需要提交的是一个整数&#xff0c;不要填写任何多余内容。 【答案】&#xff1a;125 2标题&#xff1a;明码 …

layui 数据表格 日期格式化

<div>{{ layui.util.toDateString(d.CARDDATE, "yyyy-MM-dd HH:mm:ss") }}</div>

浏览器自带的前进后退按钮禁用

jQuery(document).ready(function () {if (window.history && window.history.pushState) {$(window).on(popstate, function () {/// 当点击浏览器的 后退和前进按钮 时才会被触发&#xff0c; window.history.pushState(forward, null, );window.history.forward(1);…

【HDU - 1241】Oil Deposits (连通块问题 属于求大海中的岛屿个数 类似问题)

题干&#xff1a; The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It t…

asp.net core mvc接口,请求响应统一日志管理

如何为api所有的请求和响应做一个统一的日志记录 1.创建日志类 public class RequestResponseLog {public string Url { get; set; }public IDictionary<string, string> Headers { get; set; } new Dictionary<string, string>();public string Method { get; …

Windows下 Python3.7.0 运行环境的搭建 一套操作后就可以使用Python写代码啦~

1.下载Python for windows 废话不说&#xff0c;直接上网址&#xff1a;https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe 2.安装Python for windows 运行安装文件之后&#xff0c;你会看到这个页面&#xff1a;不得不说Python 在 Windows平台下的安装比傻瓜式还傻瓜…

【HDU - 1873】 看病要排队(优先队列)

题干&#xff1a;看病要排队这个是地球人都知道的常识。 不过经过细心的0068的观察&#xff0c;他发现了医院里排队还是有讲究的。0068所去的医院有三个医生&#xff08;汗&#xff0c;这么少&#xff09;同时看病。而看病的人病情有轻重&#xff0c;所以不能根据简单的先来先服…

h5 网站滚动到某个位置

var height $("#0107").offset().top&#xff1b; //获得要滚动到的高度 $("html:not(:animated),body:not(:animated)").animate({ scrollTop: 392 }, slow); //滚动