CF2031D Penchick and Desert Rabbit

赛时 A,B,C 共计吃了 \(5\) 发罚时,这就是我的真实实力!来补篇题解。

考虑分析每一个位置的性质,不难发现最后一个位置一定能跳到最大值的位置。

接下来,我们考虑第 \(n-1\) 个位置。类比最后一个位置,我们发现,这个位置一定能跳到 \(1\sim n-1\) 内含有的最大值。此时,\(1\sim n-1\) 内的其他树均没有意义。因为一方面它们不会成为答案,一定不会被跳到,另一方面由于往后跳只能跳到更小的位置,所以若要跳到 \(n\),则选取 \(1\sim n-1\) 内的最大值就够了。如果可以跳到,我们发现可以直接跳到最后一个位置能跳到最大值,可以直接继承。

我们不妨推广一下。如果已知 \(i+1\) 能跳到最大值,如何求出 \(i\) 能跳到最大值?显然还是一定能跳到 \(1\sim i\) 内含有的最大值,且必然还是从最大值往回后跳。考虑往后跳能跳到的最大位置一定是 \(i+1\) 能跳到最大值,如果不是 \(i+1\) 能跳到最大值,那么 \(i+1\) 一定也能跳到这个位置,矛盾。因此,我们只需要看能不能跳到 \(i+1\sim n\) 的最小值,再直接跳到 \(i+1\) 继承能跳到最大值即可。

这样一想,动态规划的思路就清晰了。预处理前缀最大值与后缀最小值,即可做到 \(O(n)\) 递推。

#include <bits/stdc++.h>
using namespace std;
long long t,n,a[600000],mx[600000],mi[600000],f[600000];
int main()
{
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
mx[0]=0,mi[n+1]=1e18;
for(int i=1;i<=n;i++)mx[i]=max(mx[i-1],a[i]);
for(int i=n;i>=1;i--)mi[i]=min(mi[i+1],a[i]);
f[n]=mx[n];
for(int i=n-1;i>=1;i--)
if(mx[i]>mi[i+1])f[i]=f[i+1];
else f[i]=mx[i];
for(int i=1;i<=n;i++)printf("%lld ",f[i]);
printf("\n");
}
return 0;
}

CF2031D Penchick and Desert Rabbit 题解的更多相关文章

  1. POJ2728:Desert King——题解

    http://poj.org/problem?id=2728 题目大意:求一棵生成树使得路费用和/路长之和最小(路的费用是两端点的高度差) 最小比率生成树. 我们还是01分数规划的思想将边权变为路费用 ...

  2. 龟兔赛跑(DP)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. 题解-AtCoder-agc006C Rabbit Exercise

    Problem AtCoder & bzoj 题意:数轴上有\(n\)个点(初始坐标均为整数),编号为\(1\)~\(n\).给出\(m\)个操作. 每个操作会选定点\(a\),然后随机在点\ ...

  4. 在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  5. (转)在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  6. poj 2728 Desert King (最小比例生成树)

    http://poj.org/problem?id=2728 Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissio ...

  7. Aizu 2306 Rabbit Party DFS

    Rabbit Party Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view. ...

  8. HDU 1849 Rabbit and Grass

    题解:因为棋子可重叠,所以就等于取石子问题,即尼姆博弈,SG[i]=i,直接将输入数据异或即可. #include <cstdio> int main(){ int SG,n,a; whi ...

  9. Desert King(最优比率生成树)

    Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 22717   Accepted: 6374 Desc ...

  10. Wolf and Rabbit

    http://acm.hdu.edu.cn/showproblem.php?pid=1222 Wolf and Rabbit Time Limit: 2000/1000 MS (Java/Others ...

随机推荐

  1. 在web.xml下配置springmvc的核心控制器

    <!DOCTYPE web-app PUBLIC        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ...

  2. javaWeb之路径

    一. 路径写法: 1. 路径分类 a. 相对路径:通过相对路径不可以确定唯一资源 * 如:./index.html * 不以/开头,以.开头路径 * 规则:找到当前资源和目标资源之间的相对位置关系 * ...

  3. 为啥有好多人说 Arduino 是玩具?

    作为一个在嵌入式领域摸爬滚打近十年的老兵,我不得不说这个问题触动了我的神经.每次听到有人说"Arduino只是个玩具",我都忍不住想反驳,但冷静下来思考后,我发现这个问题并不是非黑 ...

  4. Selenium自动安装并引用浏览器驱动的方法

    以往的程序是先下载和把浏览器驱动放在指定目录,然后在基本中引用驱动完成整个浏览器环境配置 刚好在网上看到一个更加简便的方法,记录下来 1.先安装第三方库webdriver_manager,pip in ...

  5. MySQL 数据库的性能优化方法有哪些?

    MySQL 数据库性能优化是提高数据库响应速度和处理能力的重要手段.性能优化可以从多个层面入手,涵盖数据库设计.查询优化.硬件资源优化.配置调整等方面.以下是 MySQL 数据库常见的性能优化方法: ...

  6. centos7配置复杂度

    CentOS7/RHEL7 开始使用pam_pwquality模块进行密码复杂度策略的控制管理.pam_pwquality替换了原来Centos6/RHEL6中的pam_cracklib模块,并向后兼 ...

  7. 笔记 - linux子系统更换阿里云镜像源

    平时还是用 windows 多一些, 偶尔会玩一玩 linux, 之前给我一台多年的笔记本装了个 manjaro , 颜值是蛮高的, 就一点也不太熟, 就不想玩了, 还是用子系统, win 有支持 U ...

  8. Linux Mint 部署 Docker 指南

    前言 之前都是在服务器上部署 WordPress ,最近把小电脑刷成了 Linux Mint 系统之后,就在想本地部署 WordPress 然后使用 Cloudflare 隧道内网穿透出去当博客. 不 ...

  9. TVM: 编译流程

    深度学习编译器介绍 每一种硬件对应一门特定的编程语言,再通过特定的编译器去进行编译产生机器码,那随着硬件和语言的增多,编译器的维护难度会有很大困难.现代编译器已经解决了这个问题. 为了解决这个问题,科 ...

  10. SVM回归

    SVM回归任务是限制间隔违规情况下,尽量防止更多的样本在"街道"上."街道"的宽度由超参数\(\epsilon\)控制 在随机生成的线性数据上,两个线性SVM回 ...