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. eclipse安装OpenExplorer插件--快速打开文件目录

    eclipse安装OpenExplorer插件--快速打开文件目录功能: 1.下载: github: 下载地址:https://github.com/samsonw/OpenExplorer/down ...

  2. MySQL 中 `LIMIT 100000000, 10` 和 `LIMIT 10` 的执行速度是否相同?

    在MySQL中,LIMIT 100000000, 10和LIMIT 10的执行速度通常不会相同.它们的差异在于如何处理数据的检索. LIMIT 10: LIMIT 10表示从查询结果中获取前10条记录 ...

  3. 快速开始 Mybatis TypeHandler

    theme: orange MyBatis TypeHandler是MyBatis框架中的举足轻重的组件之一,用于处理Java对象和数据库中的数据类型之间的转换. MyBatis TypeHandle ...

  4. BURP APP HTTPS抓包xposed+justtrustme工具篇

    APP HTTPS抓包 当APP是HTTPS时,则单纯的使用Burpsuite无法抓取数据包,原因是APP启用了SSL Pinning(又叫做"SSL证书绑定"). 1.下载夜神模 ...

  5. Sentinel——热点规则

    目录 热点规则 配置热点规则 API配置热点规则 热点规则 热点规则是用于实现热点参数限流的规则.热点参数限流指的是,在流控规则中指定对某方法参数的 QPS 限流后,当所有对该资源的请求URL中携带有 ...

  6. SpringCloud项目使用nacos配置

    SpringCloud项目 pom.xml 注意SpringCloud和SpringCloudAlibaba的版本对应. Spring Cloud Alibaba Version Spring Clo ...

  7. 01Spring-01jdbc 未使用spring代码编写

    目录 pom.xml JdbcDemo1.java pom.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  8. vue3 基础-单项数据流

    本篇还是了解关于组件间传值, 核心点是了解子组件只能接收父组件传递的数据而不能反向修改从而影响到其他组件造成的混乱局面. 传多值的问题 当我们要传递数据很多的时候, 可以将数据都存在一个对象中, 直接 ...

  9. C语言一点五编程实战:纯 C 的模块化×继承×多态框架

    本文将大量涉及C语言高级操作,如函数指针.结构体指针.二级指针.指针频繁引用解引用.typedef.static.inline和C语言项目结构等知识,请确保自己不会被上述知识冲击,如果没有这顾虑,请尽 ...

  10. 提高Flutter应用性能的最佳实践

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...