abc435_f

news/2025/12/6 22:21:55/文章来源:https://www.cnblogs.com/WangNoNo/p/19316722

abc435_f

不理解为什么都不会,其实挺简单的。

思路

首先,猫一开始在最高点,考虑我下一步有意义的操作只有撤掉最高的塔(若撤掉别的塔,对猫没有任何影响,只会减小答案)。

考虑撤掉 \([l,r]\) 最高塔(位置\(P\))后的两种情况

  • 猫跳到左边最高塔(位置\(p_l\)),这步跳跃对答案贡献 \(del_l=(P-p_l)\)
  • 猫跳到右边最高塔(位置\(p_r\)),这步跳跃对答案贡献 \(del_r=(p_r-P)\)

那么此时的答案 \(solve(l,r)\) 就是 \(\max(solve(l,P)+del_l, solve(P,r)+del_r)\)\(solve(1,n)\) 开始递归即可。

那么我们只需要快速处理任意一段区间的最大值即可,考虑倍增维护,于是复杂度为预处理 \(O(n\log(n))\) ,计算 \(O(n)\) 显然正确。

Code

// By wnn
#include<bits/stdc++.h>
// simple name
#define pii pair<int,int>
#define pll pair<long long, long long>
#define pque priority_queue
#define x1 x_1
#define y1 y_1
#define fir first
#define sec second
#define pb push_back
#define myfreopen freopen(".in", "r", stdin),freopen(".out", "w", stdout)
// function
#define ls(x) (x << 1)
#define rs(x) ((x << 1) | 1)
#define mid(l, r) ((l + r) >> 1)
#define debug(x) cerr << x << endl
#define dist(x, y, x2, y2) sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2))
#define WA cerr << "Wrong Answer" << endl
#define init_inf32(x) memset(x, 0x3f, sizeof(x))
#define init_inf64(x) memset(x, 0x3fll, sizeof(x))
#define init_0(x) memset(x, 0, sizeof(x))
#define Dec(x) fixed << setprecision(x)
// val
#define eps 1e-9
#define inf32 0x3f3f3f3f
#define inf64 0x3f3f3f3f3f3f3f3fll
#define mod1 (int)(1e9 + 7)
#define mod2 998244353
#define PI acos(-1.0)
// god
#define int long long
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
// Def important function
inline void init();
inline void ever_init();
inline void solve();
// Init rnd()
mt19937 rnd(time(0) ^ clock());
// Constants
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};
const int N = 2e5 + 5;int n, p[N], pos[N];
int f[N][20];
inline void init1(){for(int i = 1; i <= n; i++){f[i][0] = p[i];}for(int j = 1; (1 << j) <= n; j++)for(int i = 1; i + (1 << j) - 1 <= n; i++){f[i][j] = max(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);}
}
inline int cal(int l, int r){int k = (log2(r - l + 1));return max(f[l][k], f[r - (1 << k) + 1][k]);
}
inline int dfs(int l, int r){if(l >= r) return 0;int maxn = cal(l, r), mp = pos[maxn];int len1 = mp - pos[cal(l, mp - 1)], len2 = pos[cal(mp + 1, r)] - mp;return max(dfs(l, mp - 1) + len1, dfs(mp + 1, r) + len2);
}inline void init(){cin >> n;for(int i = 1; i <= n; pos[p[i]] = i, i++) cin >> p[i];init1();cout << dfs(1, n);
}
inline void ever_init(){}
inline void solve(){}signed main(){
//    myfreopen;ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);init();int T = 1;
//    cin >> T;while(T--){ever_init();solve();}return 0;
}
/*things to check:
* Will it MLE?
* Is array big enough?
* Do you need long long?
* Is inf big enough?
* max or min?
* Yes,No or YES,NO?
* Is there anything extra to output?
* Did you Countershoot?
* Have you measured the limit data?
* More measurements should be cleared!!!
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/990601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ret2libc+一点点保护

概述 在程序存在栈溢出,且没有直接给可利用的后台程序的情况下。利用ROP链传参“/bin/sh”调用程序system得到shell。 例题——1 例题:第六届信安大挑战 - Dino::CTF 程序内很多已经写好可以直接调用的函数会存放在l…

Ubuntu下,MySQL修改端口号

MySQL默认端口号为3306,可以通过修改配置文件来改变端口号。 配置文件:/etc/mysql/my.cnf 在[mysqld]这一栏下方增加一行配置 port=5350 保存后,执行sudo service mysql restart重启mysql服务即可本文来自博客园,作…

记CACC 2025区域赛

写了半年作业,本就不高的水平越发退步。记CACC 2025区域赛 目录记CACC 2025区域赛题目回忆A. 狗屎的A+B ProblemB. 二维DP模板题C. 我是卡常大神D. 图论题E. 优化题思想感情 题目回忆 A. 狗屎的A+B Problem\(10^{200}…

Ubuntu下,MySQL查询报错sql_mode=only_full_group_by

MySQL默认设置了该属性,导致对group by语句有很严格的限制,可以通过修改配置文件来解除该限制。 配置文件:/etc/mysql/my.cnf 在[mysqld]这一栏下方增加一行配置 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_…

详细介绍:【数据库】国产数据库替代实战:金仓KES如何以“智能运维 + 低资源占用”年省百万运维成本?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CSP2024 游记

前言: 进入复赛的第一年。 前两年,我在初赛受尽了耻辱 (前两年只报了J,还分别是24、39) 这一次,我要拿回属于我的一切! Day 0 下午2:00,在学校集合。 坐上大巴,怀揣着梦想,出发了。 蹭到了hz的热点awa 在车上…

2025年广东地区湘菜供应链江西小炒社区厨房称重自选食材配送服务商TOP5评测!全品类供应+定制化服务权威榜单发布,赋能餐饮高效运营

随着湘菜、江西小炒等特色餐饮及社区厨房模式的快速发展,对专业食材供应链的需求日益凸显。本榜单基于产品丰富度、配送效率、定制服务能力、研发赋能四大维度,结合餐饮行业协会数据与实地调研,权威解析2025年五大湘…

深入解析:Chrome插件:实现Axure RP HTML原型的便捷预览

深入解析:Chrome插件:实现Axure RP HTML原型的便捷预览2025-12-06 22:00 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important;…

老板嫌工期资源投入太多,怎么回答

目录背景和价值Step 1:用“范围拆解”让老板看到工作量Step 2:用“路径风险”说明为什么不能压缩人力Step 3:给老板提供“选项”,而不是给他一个答案Step 4:明确表达你的专业判断参考资料 背景和价值 下面给你一个…

wireshark相关

以往学习网络有使用到wireshark抓包了解包结构,今天看了一下具体的软件应用。了解了抓包有两种方式,一种是利用通信设备自身的抓包功能,将数据包抓取并且保存成文件传输到电脑后使用抓吧软件进行分析,还有一种就是…

CRNN

CRNN(Convolutional Recurrent Neural Network)是一种用于图像序列识别的端到端可训练神经网络,特别擅长处理场景文本识别任务。CRNN 的核心架构包括三个主要部分:卷积层(CNN)、循环层(RNN)和转录层(Transcri…

K8S中Ingress的采用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

『NAS』在群晖部署一款好看的白板工具-Excalidraw

点赞 + 关注 + 收藏 = 学会了整理了一个NAS小专栏,有兴趣的工友可以关注一下 👉 《NAS邪修》Excalidraw 是一款免费开源的手绘风格在线白板工具,支持实时协作和无限画布,无需注册即可直接使用,适合快速绘制草图、…

方差的迭代计算公式 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Ubuntu下,MySQL密码遗失时修改密码

问题背景 MySQL密码连接不上,需要重置密码 解决方案 由于修改密码本身需要连接到数据库,因此需要另一个系统账号来登录数据库。 下面是相关步骤: 1. 首先执行以下命令 sudo cat /etc/mysql/debian.cnf 获取到系统账…

支离破碎发言(七)

退役了,曾经的目标变为幻想,当然我其实也知道大概率最后就是幻想。 回想过来这一年多的 OI 生涯,也没什么可埋怨的,毕竟自己实力确实没到省队水准。 不过一年多 OI 生涯给我的最大感触就是,贵圈真乱。 因为竞赛本…

MD-FPN

MD-FPN 是一种优化的特征金字塔网络结构,旨在提高多尺度目标检测的性能。它通过引入多尺度预测融合和注意力机制,增强了特征提取能力 MD-FPN(Multi-Dilation Feature Pyramid Network)可以与 Faster R-CNN 结合使用…

2025最新贵州特产/伴手礼供应商TOP5推荐!贵州/贵阳/遵义/毕节/黔东南特产选购平台/渠道/供应商/采购渠道榜单发布,甄选贵州地道风物好礼

随着消费者对地域特色产品和健康生活方式的追求日益提升,贵州特产凭借独特的自然禀赋与文化底蕴备受青睐。本榜单基于品牌实力、产品特色、服务体系、文化传承四大维度,结合市场口碑与消费者反馈,权威解析2025年五大…

进程监控:通过 SSH 远程监测嵌入式设备进程重启

背景 dhcp频繁请求ip导致cpr反复重启。 为了量化这一问题,并精准捕捉重启发生的时间点(以便与网络日志对齐),我们需要一个外部监控工具。该工具需要满足以下需求:非侵入式:无需修改设备固件,通过 SSH 远程监控。…