POJ1700 Crossing River 过河问题

C程序-——Crossing River A group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore some sort of shuttle arrangement must be arranged in order to row the boat back and forth so that all people may cross. Each person has a different rowing speed; the speed of a couple is determined by the speed of the slower one. Your job is to determine a strategy that minimizes the time for these people to get across. 立即下载

一、题目信息

Crossing River
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 8897 Accepted: 3323

Description

A group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore some sort of shuttle arrangement must be arranged in order to row the boat back and forth so that all people may cross. Each person has a different rowing speed; the speed of a couple is determined by the speed of the slower one. Your job is to determine a strategy that minimizes the time for these people to get across.

Input

The first line of the input contains a single integer T (1 <= T <= 20), the number of test cases. Then T cases follow. The first line of each case contains N, and the second line contains N integers giving the time for each people to cross the river. Each case is preceded by a blank line. There won't be more than 1000 people and nobody takes more than 100 seconds to cross.

Output

For each test case, print a line containing the total number of seconds required for all the N people to cross the river.

Sample Input

1
4
1 2 5 10

Sample Output

17


二、参考代码

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    int N;
    cin >> N;
    while(N--)
    {
        vector<int> a;
        int n,m,sum = 0;
        cin >> n;
        for(int i = 1;i <= n;i++)
        {
            cin >> m;
            a.push_back(m);
        }
        sort(a.begin(),a.end());
        a.insert(a.begin(),0);
        while(1)
        {
            if(n == 2) 
            {
                sum += a[2];
                break;
            }
            else if(n == 1)
            {
                sum += a[1];
                break;
            }
            else if(n == 3)
            {
                sum +=a[1] + a[2] + a[3];
                break;
            }
            else
            {
                sum += min(2*a[2] + a[1] + a[n] ,a[n] + 2*a[1] + a[n-1]);
                a.erase(a.end()-1,a.end());
                n -= 2;
            }
        }
        cout << sum << endl;
    }
    return 0;
}



基于51单片机的简易计算器设计(原理图+仿真+源代码+参考论文) 本设计以51单片机为核心,矩阵键盘输入数字,通过1602显示屏显示计算结果,能够实现整数的加、减、乘、除四则运算,具备清除功能。 阅读详情

相关推荐

光谱预处理最简单实现方法--基于OpenSA光谱分析库

系列文章目录 “光晰本质,谱见不同”,光谱作为物质的指纹,被广泛应用于成分分析中。伴随微型光谱仪/光谱成像仪的发展与普及,基于光谱的分析技术将不只停留于工业和实验室,即将走入生活,实现万物感知,见微知著。本系列文章致力于光谱分析技术的科普和应用。 文章目录系列文章目录前言一、数据来源二、代码解读2.1 读取数据2 .2 划分数据集2 .3 返回训练集和测试集并绘制光谱图片2.4 建立1-D CNN模型2.5 训练1-D CNN模型2.6 测试1-D CNN模型2.7 运行CNN模型,并用查看结果总结

Echo_Code的博客 7067

Crossing River 过河问题

Crossing River 一群人过河,只有一条船,可以称作两个人,过河时间由慢的那个人决定,船到达对岸必须有一人在开回来. 现给出每个人的过河时间,求将所有人过河需要的最短时间 Sample Input 1 4 1 2 5 10 Sample Output 17 这时一道贪心题,最优的过河方法有两种: 当 n>3时,先将最快和次快的过河,然后最快的划船回来,然后最慢和次慢的过河,最后次快的划船回去,s1 = nums[0] + 2 * nums[1] + nums[n-1] 第二种是,最快的

江上酒 617

GPIB通讯的代码怎么写

GPIB(General Purpose Interface Bus)是一种用于连接计算机和测试设备的接口标准。 在写 GPIB 通讯的代码时,首先需要在计算机上安装 GPIB 驱动程序。然后,使用相应的编程语言和 GPIB 库函数来操作 GPIB 设备。 下面是一个使用 Python 语言和 pyvisa 库来实现 GPIB 通讯的示例代码: import visa# 创建 Visa 资源管理器...

weixin_35752645的博客 1546

Crossing River / 过河问题(贪心)

贪心算法

善良的小乔的博客 850

企业微信审批流开发避坑指南:从零搭建自定义审批模板(含完整代码)

本文为企业微信审批流开发提供了从零搭建自定义审批模板的完整指南。通过对比内置模板与自建引擎的优劣,详细阐述了利用企业微信开放API和自建应用实现高度灵活审批流程的方案。文章重点解析了前端JS-SDK安全调用、后端签名生成与回调处理的核心代码,并分享了流程引擎设计、安全加固及性能监控等实战经验,帮助企业开发者避开常见陷阱,构建贴合业务的自定义审批系统。

weixin_28358083的博客 968

Python + DeepSeek 完美结合:本地部署提效指南

随着生成式 AI 和深度学习技术的快速发展,如何将智能搜索工具与本地部署结合以提升效率成为了许多企业和开发者关注的重点。DeepSeek 是一款开源的智能搜索框架,结合 Python 的灵活性,能够实现高效、可靠的本地部署方案。本文将介绍如何通过 Python 和 DeepSeek 的完美结合,实现本地化部署并提升工作效率。通过将 Python 与 DeepSeek 结合,可以快速实现语义搜索的本地化部署,确保数据安全的同时提升工作效率。文件可直接作为 DeepSeek 的输入数据。

weixin_44872675的博客 1万+

Crossing River(贪心算法)

只有一艘船,能乘2人,船的运行速度为2人中较慢一人的速度,过去后还需一个人把船划回来,问把n个人运到对岸,最少需要多久。 输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间。 输出t行数据,每行1个数,表示每组过河最少时间。 思路: 由于运送人数,每人过河所用时间差的大小等因素在每个测试样例中不同,所以本题有两种较优方案 1.最快的和次快的过河,然后最快的将船划回来;次慢的...

Quietprogrammer的博客 1492

22、自动化地图制作与Pandas数据处理

本文介绍了在ArcGIS Pro中使用arcpy.mp模块进行自动化地图制作的关键技术,涵盖地图元素的访问、移动与文本修改,以及将布局批量导出为JPEG、PNG和PDF格式的方法。同时,文章深入探讨了Pandas在数据处理和地理空间分析中的应用,特别是Spatially Enabled DataFrames(SEDFs)的使用。通过综合案例展示了地图更新与数据清洗、分析的结合,提升了地图制作与数据处理的效率,为GIS自动化工作流提供了实用指南。

w8x9y0z1的博客 79

一本通 1232:Crossing River(贪心)

1232:Crossing River 【题目描述】 几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间。 【输入】 输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间。 【输出】 输出t行数据,每行1个数,表示每组过河最少时间。 【输入样例】 1 4 1 2 5 10 【输出样例】 17 个人思路: 一步步分解。 每组操作都将剩下的人中最慢和次慢的人(贪心)...

聽竹風的博客 2154

【WRF-Chem教程-附录 C】闪电-NOx 参数化方案详解

闪电-NOx 参数化方案详解

WW、forever的博客 974

微信小程序 - 解决微信支付报错 requestPayment:fail no permission 原因分析及排查处理(支付失败出错,无法唤起支付弹框面板,微信支付API报错请求付款:失败无权限)

微信小程序,微信支付,支付报错,errMsg: "requestPayment:fail no permission",支付失败,支付权限没问题,微信小程序支付报错,检查了appid正确依旧不行,微信小程序支付异常,苹果ios手机,安卓手机,开发者工具模拟器,最新解决教程,小程序wx.requestPayment报错/无响应,小程序支付 requestPaym,微信小程序认证,真机运行,小程序微信支付提示错误,微信小程序里使用微信支付错误提示,微信小程序支付异常,微信支付弹框拉不起来,小程序支付api,都检

🏆 前端领域优质创作者 1万+

Crossing River (模拟+贪心)

A group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore some sort of shuttle arrangement must be arranged in order to row the boat back and forth so that all people may cross. Each person has a dif

qq_56866469的博客 512

8、 使用TPM密钥:从理论到实践的全面指南

本文全面介绍了如何使用TPM(可信平台模块)进行密钥管理,涵盖密钥的创建、存储、加载、迁移以及特殊密钥类型的使用。通过详细的操作步骤和代码示例,帮助读者掌握TPM密钥管理技术,确保系统的安全性和可靠性。

weixin_36212459的博客 242

poj 1700 Crossing River 过河问题

Description A group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore some sort of shuttle arrangement must be arranged in order to row th

maqinyao5566的博客 663

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Poj 1700 Crossing River——过河问题(贪心)

Crossing River Description A group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore some sort of shuttle arrangement must be arranged in order to row the boat back and forth so that all people may c

five_east_west的博客 463

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ1700:Crossing River(过河问题)

    POJ1700 题目链接:http://poj.org/problem?id=1700 Time Limit:1000MSMemory Limit:10000KB64bit IO Format:%I64d & %I64u Description A group of N people wishes ...

Dara2015的博客 183

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

POJ 1700 解题报告——Crossing River:求过河的最少时间问题

题目是说有N个人用一条船过河,船每次最多只能载2人,所以得多次来回穿梭才能将所有人运过河。为了减少所花时间,一般两人一起坐船过河,然后其中较快的一人划回来。 当N = 1,2 时,直接过河; 当N = 3 时,最快的人分两趟将另两人运过河; 当N >= 4 时:因一次可以载两人过河,故可以两人过河看作一个基本单位。每次用最短时间把最慢的两人运过河后,直至剩余人数小于4。设当前N人中最快与次快

江湖中人的专栏 2146

POJ1700Crossing River(过河问题)

Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16551   Accepted: 6283 Description A group of N people wishes to go across a river with only o

放纵不羁爱自由 440

[ACM] poj 1700 Crossing River (经典过河问题)

Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10212   Accepted: 3855 Description A group of N people wishes to go across a river with only one

逆风的方向 更适合飞翔 4560

POJ--1700--Crossing River--过河问题

Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9893   Accepted: 3739 Description A group of N people wishes to go across a river with only

浩爷地带,你的地盘听我的.... 1040

POJ 1700 过河问题(Crossing River)

总时间限制: 1000ms 内存限制: 65536kB 描述 A group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore

pku_Coder的博客 701

POJ 1700 Crossing River 过河问题 贪心法

POJ 1700 Crossing River 过河问题 贪心法

淘萄桃的博客 902

POJ - 1700 Crossing River解题报告(过河问题的贪心策略)

题目大意:有n个人要过一条河,每个人过河都需要一个时间aia_i,有一艘船,每次过河只能最多装两个人。两个人划船过河所需的时间都取决于过河时间长的那个人。比如,A,B两人过河所需时间分别为a,b,那么,他们成一条船过河所需的时间为:max{a,b}。现在让你安排一个过河方案,让所有人用最短的时间全部过河。

薛崇祥的博客 8125

poj 1700 Crossing River && nyoj 47 过河问题

poj: http://poj.org/problem?id=1700 最简单的农夫过桥问题,贪心。 网上找的思路: http://www.cnblogs.com/drizzlecrj/archive/2007/10/20/931011.html 以下是构造N个人(N >= 1)过桥最佳方案的方法 1)如果N=1或者N=2,所有人直接过桥。 2)如果N=3,由最快的人往

GinSmile的博客 1801

poj 1700 Crossing River 过河问题。贪心

Crossing River Time Limit:1000MS Memory Limit:10000K Total Submissions:9887 Accepted:3737 Description A group of N people wishes to go across a river with only one ...

weixin_34189116的博客 208

POJ 1700-Crossing River(贪心+过河问题)

Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20240   Accepted: 7546 Description A group of N people wishes to go across a r...

I_believe_CWJ的博客 690
上一篇: 软件工程师所需掌握的“终极技术”是什么?
下一篇: POJ 1003 Hangover
Sinchb
博客等级 码龄15年 69粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值