C++过河(动态规划dp)

关于C++的过河问题 /*第一步:1、2过去1回 3分钟第二步:5、10过去2回 12分钟第三步:1、2过去 2分钟总和3+12+2=17*///如果人再多一点的话那么就是第一步和第二步的一个循环,每次都是按照这两步的模式来走,直到最后,剩下的人数只有两种情况2个人或3个人,然后按照上面两个例子的第三步#includeusing namespace std;int main(){   阅读详情

C++过河(动态规划dp)

在一个夜黑风高的晚上,有 n 个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不超过两人通过,他们只有一个手电筒,所以每次过桥后,需要有人把手电筒带回来,第 i 号小朋友过桥的时间为 a[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。
输入格式
第一行输入一个整数 n,表示有 n 个小朋友。
第二行有 n 个整数 ai ,ai表示第 i个小朋友过河需要的时间。
输出格式
输出一个整数,表示所有小朋友过河所需要的时间。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 bridge.in,输出文件为 bridge.out
样例输入
4
1 2 5 10
样例输出
17

采用dp:
1.让花费时间最少的人把手电筒送过来,然后和第 i 个人一起过河
2.让花费时间最少的人把电筒送过来,然后第 i 个人和另外一个人一起过河,由于花费时间最少的人在这边,所以下一次送手电筒过来的一定是花费次少的,送过来后花费最少的和花费次少的一起过河,解决问题

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[10000],f[10000];
int main(){
    freopen("bridge.in","r",stdin);
    freopen("bridge.out","w",stdout);
    cin>>n;
    for (int i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n);
    f[0]=a[0];
    f[1]=a[1];
    for (int i=2;i<n;i++){
        f[i]=min(f[i-1]+a[0]+a[i],f[i-2]+a[0]+2*a[1]+a[i]);
    }
    cout<<f[n-1];
    return 0;
}

多多点赞哦~~

人羊狼菜过河问题c++ 阅读详情

相关推荐

YCOJ黑熊过河(C++)

嘻嘻,这是一道典型的DP题目,但貌似网上都没有类似的题解,那兔子就来说一说吧! 黑熊过河 描述 有一只黑熊想过河,但河很宽,黑熊不会游泳,只能借助河面上的石墩跳过去,他可以一次跳一墩,也可以一次跳两墩,但是每起跳一次都会耗费一定的能量,黑熊最终可能因能量不够而掉入水中,所幸的事,有些石墩上放了一些食物,这些食物可以给黑熊增加一定的能量,问黑熊能否利用这些石墩安全的抵达对岸,若能,则计算出抵达对岸...

洛谷棕名用户的博客(兔子的博客) 975

洛谷—P1809 过河问题(经典动态规划问题)

解题思路: 这一题运用的是贪心思想,不能想出,每一步的最优解存在于两种方案中,第一种是过河最短时间的人开船过来,接走一个过河时间最长的人再开船返回。第二种是过河时间最短的人开船过来,他留下,让当前两个最长过河时间的人乘船过岸,然后再让对岸最短过河时间的人开船过河将他接回。 令dp[i]为将前i个人运送过河所需要的最短时间,再列出状态转移方程 代码: #include<bits/stdc++...

weixin_43784305的博客 1541

洛谷P1002 [NOIP2002 普及组] 过河卒|C++

P1002 [NOIP2002 普及组] 过河卒 #include <stdio.h> #include <iostream> #include<iomanip> #include <cstring> #include <vector> #pragma warning(disable:4996); using namespace std; const int maxn = 110; //vector<vector<long long&g

资资的博客 474

过河问题【C++】

输入说明:输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间。题目描述:几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间。输出说明:输出t行数据,每行1个数,表示每组过河最少时间。

E767751的博客 2131

【C++】【NOIP 2002 普及组】过河卒 题解

NOIP 2002 普及组 过河卒 C++ 题解。

after_Tomorrow_的博客 330

莞工oj 4.马栏过河卒

莞工oj 4.马栏过河卒 题目: 思路: 这是一道DP类型题。(决策问题,同分治法解决不太一样,分治法是有联系的,而这个决策之间没什么特别联系。) 分析这道题目,由于兵只能向下或者向右走,不难发现其动态方程 dp[i][j] = dp[i-1][j] + dp[i][j-1] 也就是点i,j的路径总数是等于(i-1,j)与(i,j-1)路径总数的和。 并且i=0和j=0的行和列路径总数都是1。 障碍点(马的位置及其一步可以走到的位置)的路径总数都是0。 所以就可以解出这道题了。 一开始用python写了:

shadow7878的博客 1236

过河问题,C++(非搜索算法实现)

问题描述:农夫带着狼, 羊, 白菜过河,如果农夫没有在旁边看着它们, 狼就会吃羊, 羊会吃白菜, 但是小船一次只能载一人一物。 主要过程: 判断农夫状态 -> 决定去右岸还是回左岸 去右岸 -> 带哪一件物品(先判断这件物品是不是我刚带回来的!) 带哪一件物品 -> 模拟带走以后,会不会相互伤害 -> 不相互伤害则带走(相互伤害则跳过) 回左岸 -> 若独自一人回去...

qq_43556776的博客 1327

C/C++基础讲解(八十四)之游戏篇(商人过河游戏)

程序主要是基于Turbo C++ 4.0 Windows 7 Windows 8 64Bit Version进行编译完成了,有兴趣的小伙伴可以自己安装下Turbo C++ 4.0 Windows 7 Windows 8 64Bit Version,网上有现成的教程,当然了,如果有问题,也可以和我联系,这里我们主要讲解些源码实例,不多说了,言归正传。 C语言,做为学习其他语言的基础语言,其重要性就不言而喻了.下面我将和大家一起来学习探讨C语言的相关奥秘。 实例1:商人过河游戏

hnjzfwy的博客 371

小松鼠过河

一天小松鼠想去到河的对面找他的朋友小熊玩。但是他没有办法直接游过去,只能选择游一小段,然后靠漂浮在水面上的木头跨过去。题目中会把过河的路线抽象成一条数轴,小松鼠开始在数轴零的位置上。每一次小松鼠可以选择向前游一格,或向后游一格。你有一格都算走了一步。如果他爬上了木头,穿过整个木头算一步。现在请你编写代码,帮小松鼠计算,他最小需要几步可以游到河的对岸。,代表河对岸在数轴上的位置。然后题目会再给你一个整数。行每行会给两个整数,分别代表木头从河的。代表河面上漂流的木头的数量。现在题目中会给你一个整数。

weixin_50456250的博客 591

【华为OD机试真题 C++语言】96、士兵过河 | 机试真题+思路参考+代码解析

一支N个士兵的军队正在趁夜色逃亡,途中遇到一条湍急的大河。 敌军在T的时长后到达河面,没过到对岸的士兵都会被消灭。 现在军队只找到了只小船,这船最多能同时坐上2个士兵。   1、当1个兵划船过河,时为a[i]; 0

KJ.JK 981

思科路由器、交换机组网实验报告

通过思科模拟器搭建路由交换网络

ghj528的博客 1328

过河卒

http://www.rqnoj.cn/Problem_69.html 坐标DP问题,本题比较简单,动规方程dp[i][j] = dp[i-1][j] + dp[i][j-1] ,对于特殊的点,只需要判断一下,然后赋值为0即可。虽然数据规模比较小,但是结果却比较大,需要用long long存储,同时输出的时候用%I64d输出,用%lld出错。代码如下: /* ID: csuchenan PRO

BootStar 619

从零到一:Zephyr RTOS 在 STM32F4 上的移植与实战(含设备树配置详解)

本文详细介绍了如何从零开始将Zephyr RTOS移植到STM32F4开发板,涵盖开发环境搭建、硬件抽象层分析、设备树配置及系统裁剪等关键步骤。通过实战案例,帮助开发者掌握Zephyr RTOS在嵌入式设备中的应用,提升物联网边缘计算设备的开发效率。

weixin_26976635的博客 585

C++洛谷P1002 过河卒

这道题考察动态规划的应用。题目要求计算从(0,0)到(n,m)的路径数,其中马的位置及其控制点不能通过。解法步骤:1)初始化dp数组,标记马的控制点为-1;2)使用方向数组处理马的攻击范围;3)通过状态转移方程dp[i][j] = dp[i-1][j] + dp[i][j-1]计算路径数;4)最终输出dp[n][m]。时间复杂度O(nm),空间复杂度O(nm)。

Tan_Zhixia的博客 564

SQL Prompt 9.0插件突然无法使用解决办法(附防联网激活)多图+文字

可能由于Redgate公司最近抓盗版抓得严,导致激活后的SQL Prompt联网后突然无法使用,无论卸载重装都没办法继续使用,本人同时使用SQL Assistant和SQL Prompt,我喜欢SQL Assistant代码提示功能,而SQL Prompt我喜欢将查询结果复制后可以直接生产插入脚本,这是最爽的一件事,即便对表有多么熟悉,没有这些插件,几行语法都要敲大半天,目前本人已经离不开这两个插...

骚团长的博客 1万+

从零到一:Cadence AC仿真中的运放性能参数深度解析与实战避坑指南

本文深度解析Cadence AC仿真中运放性能参数的精确测量方法,包括开环增益、带宽和相位裕度等关键指标。通过实战案例分享常见设置错误的避坑技巧,帮助工程师提升设计成功率和仿真效率,特别针对全差分运放和工艺角分析提供专业指导。

www00的博客 288

洛谷P1002 过河卒(简单递推dp)

P1002 过河卒 题解:先把马阻挡的地方给标记上,然后递推即可。dp[i][j]dp[i][j]dp[i][j]代表卒走到(i,j)(i,j)(i,j)所可行的路线数。 #include&lt;bits/stdc++.h&gt; typedef long long LL; using namespace std; const int dir[2][9]={{0,-2,-1,1,2,2,1,-1,...

Eternally831143的博客 490

RK3588开发板NPU加速YOLO目标检测完整实战教程

🚀 RK3588开发板NPU加速YOLO目标检测实战 本文详细介绍了如何在瑞芯微RK3588开发板上利用内置NPU加速YOLO目标检测的全流程: 1️⃣ 环境准备:配置RKNPU2 SDK和aarch64交叉编译器,搭建Ubuntu开发环境 2️⃣ 模型转换:从ONNX格式转换为专用RKNN模型,适配NPU硬件特性 3️⃣ 性能对比:NPU推理将处理时间从833ms降至50ms以下,帧率提升16倍 4️⃣ 实战应用:支持图像/视频流/摄像头实时检测,提供完整编译和运行命令 关键优势:专为边缘AI设计的6T

FJN110的博客 925

过河卒cpp动态规划

利用二维数组存储棋盘的各个点的位置,首先初始化所有位置为0,然后记马的位置为1,将m,n同时加2,避免马的位置溢出,然后对二维数组进行递推算出dp[n][m]

2302_80145725的博客 337

推荐系统(十六):基于ESMM的商品召回/推荐系统

ESMM(Entire Space Multi-Task Model)是阿里巴巴提出的多任务学习框架,通过联合建模点击率(CTR)和点击转化率(CVR)解决传统CVR模型样本稀疏问题。其核心思想是将 CVR 定义为 CTR 与 CTCVR 的条件概率,模型包含两个子任务。

Jin_Kwok的博客 1260

STM32Cube高效开发教程<基础篇>(一)----概述

一、 STM32系列器件和开发工具发展历史声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。一、 STM32系列器件和开发工具发展历史。

我的博客 185

CF 295C Greg and Friends DP

題目: 有50斤的人c1人,100斤的人c2人。現在他們需要過河,但是只有一條船,並且船的載重重量不超過k。問有多少種方法 使得運人過河的次數最少。 分析: 三維DP。 由於從河的對岸過來以及過去河的對岸是等價的,所以我們直接考慮單次過河的情況。 dp[i][x][y]表示第i次過河,過河之後對岸有50斤的人x,100斤的人y的方法數。 我們假設第n次過河的人的個...

weixin_30588907的博客 173

PCL 欧式聚类分割【2026最新版】

PCL中欧式聚类提取算法原理详解、代码实现以及一个大自然场景地物分割提取并保存分割结果到本地文件夹的应用案例。

点云侠的博客 40万+

力扣(LeetCode)403. 青蛙过河(2023.02.05)

解释:青蛙可以成功过河,按照如下方案跳跃:跳 1 个单位到第 2 块石子, 然后跳 2 个单位到第 3 块石子, 接着 跳 2 个单位到第 4 块石子, 然后跳 3 个单位到第 6 块石子, 跳 4 个单位到第 7 块石子, 最后,跳 5 个单位到第 8 个石子(即最后一块石子)。解释:这是因为第 5 和第 6 个石子之间的间距太大,没有可选的方案供青蛙跳跃过去。输入:stones = [0,1,3,5,6,8,12,17]输入:stones = [0,1,2,3,4,8,9,11]

ChaoYue_miku的博客 464

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

P1052 [NOIP2005 提高组] 过河

一道DP模板,easy。

2302_78855882的博客 312

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

leetcode 403. 青蛙过河

一只青蛙想要过河。 假定河流被等分为 x 个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。 给定石子的位置列表(用单元格序号升序表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一个石子上)。 开始时, 青蛙默认已站在第一个石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格1跳至单元格2)。 如果青蛙上一步跳跃了 k 个单位...

计算机科学与技术专业学生的成长之路 506
上一篇: C++超级书架(深度优先搜索)
下一篇: 广度优先搜索BFS bfs
Keven_11
博客等级 码龄7年 64粉丝 172原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值