洛谷 P4995 跳跳!题解 贪心

洛谷P4995【 跳跳!】 题解 一看题目名字,下意识地认为DP。 打开题目,发现是一道水的贪心,和DP没一分钱关系(毕竟是洛谷最水月赛的T2)。 废话不多说。 看完题面,首先想到排序。要将乱序的石头高度变为有序,才能更好地想题。 C++排序代码: sort(a+1,a+1+n);//STL大法好! 因为要使耗费的体力值最大,所以距离肯定要最长。 又因为地面高度是0,所以肯定要跳到最高的一块石头上才能耗费最多的体力值。 跳到最高... 阅读详情

跳跳!

题目描述

你是一只小跳蛙,你特别擅长在各种地方跳来跳去。

这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 i i i 块的石头高度为 h i h_i hi​,地面的高度是 h 0 = 0 h_0 = 0 h0​=0。你估计着,从第 i i i 块石头跳到第 j j j 块石头上耗费的体力值为 ( h i − h j ) 2 (h_i - h_j) ^ 2 (hi​−hj​)2,从地面跳到第 i i i 块石头耗费的体力值是 ( h i ) 2 (h_i) ^ 2 (hi​)2。

为了给小 F 展现你超级跳的本领,你决定跳到每个石头上各一次,并最终停在任意一块石头上,并且小跳蛙想耗费尽可能多的体力值。

当然,你只是一只小跳蛙,你只会跳,不知道怎么跳才能让本领更充分地展现。

不过你有救啦!小 F 给你递来了一个写着 AK 的电脑,你可以使用计算机程序帮你解决这个问题,万能的计算机会告诉你怎么跳。

那就请你——会写代码的小跳蛙——写下这个程序,为你 NOIp AK 踏出坚实的一步吧!

输入格式

输入一行一个正整数 n n n,表示石头个数。

输入第二行 n n n 个正整数,表示第 i i i 块石头的高度 h i h_i hi​。

输出格式

输出一行一个正整数,表示你可以耗费的体力值的最大值。

样例 #1

样例输入 #1

2
2 1

样例输出 #1

5

样例 #2

样例输入 #2

3
6 3 5

样例输出 #2

49

提示

样例解释

两个样例按照输入给定的顺序依次跳上去就可以得到最优方案之一。

数据范围

对于 1 ≤ i ≤ n 1 \leq i \leq n 1≤i≤n,有 0 < h i ≤ 1 0 4 0 < h_i \leq 10 ^ 4 0<hi​≤104,且保证 h i h_i hi​ 互不相同。

对于 10 % 10\% 10% 的数据, n ≤ 3 n \leq 3 n≤3;

对于 20 % 20\% 20% 的数据, n ≤ 10 n \leq 10 n≤10;

对于 50 % 50\% 50% 的数据, n ≤ 20 n \leq 20 n≤20;

对于 80 % 80\% 80% 的数据, n ≤ 50 n \leq 50 n≤50;

对于 100 % 100\% 100% 的数据, n ≤ 300 n \leq 300 n≤300。

原题

洛谷P4995——传送门

代码

#include <bits/stdc++.h>
using namespace std;
#define max_Heap(x) priority_queue<x, vector<x>, less<x>>
#define min_Heap(x) priority_queue<x, vector<x>, greater<x>>
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<long long, long long> PLL;
const double PI = acos(-1);

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    // 本题贪心策略:每次选择与当前高度差值最大的石头,向其跳跃
    int n;
    cin >> n;
    vector<int> h(n + 1);
    h[0] = 0; // 地面高度为0
    for (int i = 1; i <= n; i++)
    {
        cin >> h[i];
    }
    sort(h.begin(), h.end()); // 将高度从低到高排序
    ll ans = 0;               // 记得开long long
    int l = 0;
    int r = n;
    int f = 1; // 跳跃方向,初始化为从低处到高处
    while (l < r)
    {
        ans += pow(h[r] - h[l], 2);
        if (f == 1)
            l++;
        else
            r--;
        f *= -1; // 更换跳跃方向
    }
    cout << ans;

    return 0;
}
题解:洛谷 P4995 跳跳! 小 F 给你递来了一个写着 AK 的电脑,你可以使用计算机程序帮你解决这个问题,万能的计算机会告诉你怎么跳。为了给小 F 展现你超级跳的本领,你决定跳到每个石头上各一次,并最终停在任意一块石头上,并且小跳蛙想耗费。那就请你——会写代码的小跳蛙——写下这个程序,为你 NOIP AK 踏出坚实的一步吧!这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第。当然,你只是一只小跳蛙,你只会跳,不知道怎么跳才能让本领更充分地展现。输出一行一个正整数,表示你可以耗费的体力值的最大值。 阅读详情

相关推荐

SiamRPN++实战:如何用深度孪生网络提升无人机目标跟踪精度(附代码)

本文深入探讨了如何利用SiamRPN++深度孪生网络构建适用于无人机平台的高精度、轻量化单目标跟踪系统。文章详细解析了其兼顾精度与效率的核心原理,并提供了从PyTorch模型轻量化、骨干网络替换到TensorRT部署及应对遮挡、光照突变等实际挑战的完整工程实践指南与代码示例。

weixin_29047545的博客 370

洛谷P4995 跳跳!进阶解法

#include<iostream> #include<algorithm> using namespace std; constexpr int MAX_LENGTH = 300; int n, h[MAX_LENGTH], g[MAX_LENGTH + 10]; long long sum; int main() { cin >> n; for (int i = 0; i < n; i++) cin >> h[i]; sort(h, h

金色传说的特级博客 227

本地AI语音生成与配音工作台Pandrator:从TTS到RVC的完整实践指南

语音合成(TTS)技术通过深度学习模型将文本转换为自然语音,其核心原理涉及声学建模与波形生成。这项技术不仅提升了人机交互体验,更在内容创作领域展现出巨大价值,广泛应用于有声书制作、视频配音、虚拟助手等场景。本文聚焦于一个集成了XTTS-v2、RVC等先进模型的本地化AI语音工作台——Pandrator,它通过模块化架构将语音合成、声音克隆、音频转录与翻译等流程无缝整合,为用户提供了一个图形化、可定制的完整解决方案。文章深入解析了其基于TTS与RVC(Retrieval-based Voice Convers

weixin_42676876的博客 339

P4995 跳跳!【贪心】

题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去。 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 iii 块的石头高度为 hih_ihi​,地面的高度是 h0=0h_0 = 0h0​=0。你估计着,从第 iii 块石头跳到第 jjj 块石头上耗费的体力值为 (hi−hj)2(h_i - h_j) ^ 2(hi​−hj​)2,从地面跳到第 iii 块石头耗费的体力值是 (hi)2(h_i) ^ 2(hi​)2。 为了给小 F 展现你超级跳的本领,你决定跳到每个石头上各一次

ln2037的博客 599

【SeedLab】Packet Sniffing and Spoofing Lab

本节实验要求:借助Scapy库,实现网络流量的捕获与伪造。

cold_windx的博客 4515

【肌电处理】肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率【含Matlab源码 3386期】

肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 822

[洛谷]P4995 跳跳!

详细注释,小白嘎嘎冲

m0_74969835的博客 456

GaussDB本地安装手册(主备模式)

如果实例状态是Normal,则安装成功。三节点集中式配置文件。

Sebastien23的博客 2633

P4995 跳跳!

题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去。 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第ii块的石头高度为h_ihi​,地面的高度是h_0 = 0h0​=0。你估计着,从第ii块石头跳到第jj块石头上耗费的体力值为(h_i - h_j) ^ 2(hi​−hj​)2,从地面跳到第ii块石头耗费的体力值是(h_i) ^ 2(hi​)2。 为了给小 F 展现你超级跳的本领,你决定跳到每个石头上各一次,并最终停在任意一块石头上,并且小跳蛙想...

qq_57813305的博客 557

深度学习-161-Dify工具之对比使用工作流和聊天流生成图表可视化的html文件

分别使用聊天流和工作流进行数据分析结果的可视化,生成html文件。聊天流可以配置带记忆,这样就可以多次交互优化结果。

qq_20466211的博客 1709

ubuntu20.04屏幕亮度无法调节(亮度条调节无效)的简单靠谱解决方案及踩坑历程

0 前言   网上关于ubuntu系统亮度无法调节的问题的解决方法有很多,但是绝大部分并没有什么用(这也是我自己的亲身体会),或者并不靠谱。在遍尝各路方法过后,我终于解决了这一棘手的问题(毕竟最大亮度真的非常刺眼,无法长时间直视),在此记录一下踩坑历程以及最后的解决方案。 1 Naive方法   由于使用需要,最近在电脑原有的win10基础上安装了ubuntu双系统。我安装的是当前新版的ubuntu20.04.2.0,靠谱的安装教程可以参考这里。   之前师兄说双ssd安装双系统会有系统启动引导的问题出现,

zeeq的博客 4万+

洛谷 P4995 跳跳

我们使用flag来表示状态,当flag=1时,表示目前处于高度低的地方,需要往高度高的石头上跳;当flag=0时,表示目前处于高度高的地方,需要往高度低的石头上跳。接着使用while循环,当l<r时循环,我们根据flag的状态,来判断跳的方向,当flag=1时,计算出该跳所需体力并且加到res上,然后让l加一;的石头上,若我们想在下一次跳花费更多的体力,则需要下一次跳到最高或最低的石头上。为了给小 F 展现你超级跳的本领,你决定跳到每个石头上各一次,并最终停在任意一块石头上,并且小跳蛙想耗费。

2301_80097874的博客 1025

YOLOv11 改进 - 注意力机制 | GC Block(GlobalContext Block)全局上下文块:三重变换捕获全局依赖,提升复杂场景鲁棒性

本文介绍了全局上下文块(GC Block)及其在YOLOv11中的集成应用。GC Block是GCNet的核心组件,结合了NLNet和SENet的优势,通过上下文建模、特征变换和特征融合三个模块,高效捕获特征图中的全局依赖关系,在提高模型性能的同时降低计算成本。我们将GC Block引入YOLOv11,在检测头部分的不同尺度特征图上应用该模块。实验表明,改进后的YOLOv11在目标检测任务中表现良好,展现了GC Block在实际应用中的价值。

魔改工程师的博客 951

洛谷【算法1-5】贪心 ——P4995 跳跳!

排序处理:将石头高度升序排列(a[1]到a[n]方便后续用双指针选择最高和最低的石头双指针策略:l指针初始指向最低石头(a[1]h指针初始指向最高石头(a[n]跳跃逻辑:第一跳特殊处理:从地面(0)跳到最高石头l++;h--;// 移动指针边界处理:当石头数量为奇数时,最后一个石头会自动被处理使用确保所有石头都被访问。

apple_51927114的博客 1057

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

洛谷P4995 跳跳!题解

求关注,求赞,求评论QAQ 题目:https://www.luogu.org/problemnew/show/P4995 简单描述一下吧,就是说有n块石头,起始可以跳到任何一块上面,接着也是,只不过每一块石头只能跳一次,求耗费的最大的体力(计算方法见链接) 分析: 这道题一看,我们要最大化我们的体力值,说明我们的每一次要尽可能的跳的远,此时...

ShineEternal的笔记小屋 436

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【洛谷】P4995 跳跳 题解

P4995 跳跳 泪目了…第一道独立ac的贪心题…不过也是因为这道题简单的原因 要求出耗费体力的最大值,则我们要尽可能的保证每次起跳和目标的石头两者绝对值最大 然后对石头序列进行升序排序 显而易见,从地面跳上最高的石头,也就是最后一块石头,是最优解 然后从最高的石头跳向最低的石头,按此规则依次跳向没跳过的石头,ac。 为什么要这么跳呢?我们假设,跳上最高的石头后,跳向的不是最低的石头,则这次跳跃不是最优解 而下次跳跃跳向没跳过的最高的石头时,也就不是最优解,反证可证明贪心正确。 ac代码: #inc

cywsCs的博客 1382

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

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

【贪心】P4995 跳跳!

P4995 跳跳! 题目 思路 尝试交换ai+1和ai+2a_{i+1}和a_{i+2}ai+1​和ai+2​,观察序列ai,ai+1,ai+2,ai+3a_i,a_{i+1},a_{i+2},a_{i+3}ai​,ai+1​,ai+2​,ai+3​ 交换前(ai+1−ai)2+(ai+2−ai+1)2+(ai+3−ai+2)2(a_{i+1}-a_i)^2+(a_{i+2}-a_{i+1})^2+(a_{i+3}-a_{i+2})^2(ai+1​−ai​)2+(ai+2​−ai+1​)2+(ai+3​−a

鱼竿钓鱼干 286

【P4995 跳跳!】2025-3-10

这篇文章讨论了洛谷P4995题目的解题思路。作者指出,为了最大化体能消耗,最优策略是从地面跳到最高石头,再跳到最低石头,然后跳到次高石头,如此交替进行。文章提出了一个"观音兰花手双向排序法"来实现这一策略,并附带了一段未完成的代码框架。虽然代码目前是排序后再计算的普通实现,但作者提到理想情况下应将计算整合到排序过程中以提高效率。对于后五个测试点未通过的原因,文章没有具体说明,需要进一步调试或优化算法实现。

浤济的专栏 164

[P4995]跳跳!(贪心)

这应该是我做过的最简单的洛谷月赛了 题意 给你n个高度,你的初始高度是0,现在要求你遍历每一个高度,每一次遍历耗费(hi−hj)2 的值 现在要你求耗费值最大 思路 真的是水…… 排序一下,求一下就好。 注意下就是每次求时候右端点先-- 再左端点++ 代码 #include<cstdio> #include<algorithm> usin...

diejia6473的博客 227

洛谷:P4995 跳跳!

这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 i 块的石头高度为 hi​,地面的高度是 h0​=0。你估计着,从第 i 块石头跳到第 j 块石头上耗费的体力值为 (hi​−hj​)2,从地面跳到第 i 块石头耗费的体力值是 (hi​)2。小 F 给你递来了一个写着 AK 的电脑,你可以使用计算机程序帮你解决这个问题,万能的计算机会告诉你怎么跳。为了给小 F 展现你超级跳的本领,你决定跳到每个石头上各一次,并最终停在任意一块石头上,并且小跳蛙想耗费。

2503_94758394的博客 369

洛谷刷题集合 | 贪心 |

算法之美!!

shanzhuooo的博客 682

洛谷题解——C语言

所以如果我们吃掉第一个里的,只会减少一个分组的量,而如果吃掉第二个里的,可以减少2个分组的量。所以我们要尽量吃掉第二个里的糖果。处理好第一个分组后,来看第二个,因为第一个分组已经被处理好了,所以可以无视它,然后问题又变成了前一个问题。先输入,再用单价进行排序 先用一个tot记录当前数量,如果当前数量小于于等于所求数量,用sum记录当前所用钱数,因为用单价从小到大排了序,所以当当前数量大于所求数量时,此时的总价就是最小的钱数。先跳到最高的柱子,再跳到最低的柱子,再跳到次高的柱子,再跳到次低的柱子,……

2401_87463988的博客 492
上一篇: 洛谷 P4779 [模板] 单源最短路径 题解 dijkstra算法
下一篇: 洛谷 P2240 [深基12.例1] 部分背包问题 题解 贪心
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值