一看题目名字,下意识地认为DP。

打开题目,发现是一道水的贪心,和DP没一分钱关系(毕竟是洛谷最水月赛的T2)


废话不多说。

看完题面,首先想到排序。要将乱序的石头高度变为有序,才能更好地想题。

C++排序代码:sort(a+1,a+1+n);

(STL大法好!)

因为要使耗费的体力值最大,所以距离肯定要最长。

又因为地面高度是0,所以肯定要跳到最高的一块石头上才能耗费最多的体力值。

跳到最高的石头上后,为了耗费更多的体力值,就应该跳到距离这块石头最远的石头上,也就是除地面外最矮的一块石头。

跳到除地面外最矮的石头上后,为了耗费更多的体力值,就应该跳到第二高的石头上。

…………以此类推

注意:虽然n很小,但是石头的高度很高,所以应该用long long类型(比赛时我被坑了……),就有了OIer最爱说的一句话:十年OI一场空,不开long long见祖宗。

(扯多了……)

于是我们就有了下列代码:


#include<bits/stdc++.h>//万能头文件,训练时可以用,但在比赛时不推荐使用,常常出现一些莫名其妙的错误
using namespace std;//标准名字空间
long long n/*石头块数*/,a[]/*每一块石头的高度*/,i,j,k,l,s/*计算体力值*/;
int main(){
scanf("%lld",&n);//输入石头的块数
for(i=;i<=n;i++)
scanf("%lld",&a[i]);//输入每个石头的高度
sort(a+,a++n);//将石头的高度从小到大排序
s=s+a[n]*a[n];//体力值首先应该加上跳到最高的石头上的体力值
j=;//小跳蛙将要跳到的石头
k=n;//小跳蛙当前所在的石头
while(j<k){//如果当前石头比将要跳到的石头高
l++;//次数加1
s=s+(a[k]-a[j])*(a[k]-a[j]);//加上此次跳跃耗费的体力值
if(l%==)k--;//如果跳了奇数次,j就变成当前所在石头,下一个将要跳到的石头为k-1
else j++;//否则,k就是当前所在石头,下一个将要跳到的石头为j+1
}
printf("%lld\n",s);//输出最大体力值
return ;
}

那一个while循环是这个代码的关键,一定要弄明白!

题解 【洛谷P4995】跳跳!的更多相关文章

  1. 洛谷 P4995 跳跳!

    思路 贪心 从大到小排序,然后反复横跳,记录两个指针 \(l=1, r=n\),从 \(1\) 跳到 \(n\),再从 \(n\) 跳到 \(2\),然后从 \(2\) 跳到 \(n - 1\)--, ...

  2. 洛谷P4995 跳跳!题解

    求关注,求赞,求评论QAQ 题目:https://www.luogu.org/problemnew/show/P4995 简单描述一下吧,就是说有n块石头,起始可以跳到任何一块上面,接着也是,只不过每 ...

  3. 题解 洛谷P5018【对称二叉树】(noip2018T4)

    \(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...

  4. 题解 洛谷 P3396 【哈希冲突】(根号分治)

    根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...

  5. 题解-洛谷P5410 【模板】扩展 KMP(Z 函数)

    题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 L ...

  6. 题解-洛谷P4229 某位歌姬的故事

    题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \( ...

  7. 题解-洛谷P4724 【模板】三维凸包

    洛谷P4724 [模板]三维凸包 给出空间中 \(n\) 个点 \(p_i\),求凸包表面积. 数据范围:\(1\le n\le 2000\). 这篇题解因为是世界上最逊的人写的,所以也会有求凸包体积 ...

  8. 题解-洛谷P4859 已经没有什么好害怕的了

    洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) ...

  9. 题解-洛谷P5217 贫穷

    洛谷P5217 贫穷 给定长度为 \(n\) 的初始文本 \(s\),有 \(m\) 个如下操作: \(\texttt{I x c}\),在第 \(x\) 个字母后面插入一个 \(c\). \(\te ...

随机推荐

  1. JS 弹出小窗口

    弹出窗口函数 function openwindow(url,name,iWidth,iHeight){ var url; //转向网页的地址; var name; //网页名称,可为空; var i ...

  2. MariaDB(MySQL)创建、删除、选择及数据类型使用详解

    一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行 ...

  3. Python的基本语法和数据类型(简明教程)

    声明:借鉴Python 简明教程 一.注释 注释: 就是对代码的解释 方便大家阅读python代码,在编辑器中快捷键:  notepad :ctrl + q    pycharm: ctrl + / ...

  4. Python 教你 4 行代码开发新闻网站通用爬虫

    \ ​ GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容.标题.作者.发布时间.正文中的图片地址和正文所在的标签源代码.G ...

  5. C# 工具类LogHelper

    一.创建一个WinForm的项目,并通过NuGet安装log4net. 二.创建LogHelper类以及log4net.config配置文件. 三.编写相关代码. 1.LogHelper类 using ...

  6. Python3标准库:array数组

    1. array数组 array模块定义了一个序列数据结构,看起来与list很相似,只不过所有成员都必须是相同的基本类型.支持的类型包括所有数值类型或其他固定大小的基本类型(如字节). 代码 类型 最 ...

  7. VMware桥接模式下虚拟机ping主机不通

    现象: VMware设置为桥接模式,虚拟机ping主机不通,主机ping虚拟机通. 解决: 尝试以下几种方法 关闭主机(专用网络.来宾或公用网络)和虚拟机的防火墙. 更改桥接的物理网卡,确保是主机正在 ...

  8. Intel 8086 常用汇编指令表

    一.数据传输指令 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH ...

  9. uva1428树状数组

    用树状数组统计每个点i,左边与右边与多少个点小于a[i],然后用乘法原理和加法原理得出答案 #pragma GCC optimize(2) #include <bits/stdc++.h> ...

  10. UCB博士资格考试试题

    https://math.berkeley.edu/~myzhang/qual.html?tdsourcetag=s_pcqq_aiomsg <!-- Page Content --> & ...