当前位置: 首页 > news >正文

P1725 琪露诺 解题笔记

原题链接

我会暴力dp!

\(dp_i\) 为刚好到第 \(i\) 个格子的最大值。那么 \(dp_i\) 就可以从 \([i - RR, i - LL]\) 这段区间内转移。

则可以得出状态转移方程 \(dp_i = dp_{j} + a_i\)\(j\)\([i - RR, i - LL]\) 区间内)

暴力查询最大的 \(dp_j\),时间复杂度\(O(n ^ 2)\),可得 \(60\) 分。

我会单调队列!

发现每段区间像一个滑动窗口,于是用单调队列维护最大值。

时间复杂度 \(O(nlogn)\),可以通过本题。

我会线段树!

发现转移类似于区间查询,更新类似于单点修改,于是用线段树维护区间最大值。

每次查询查询 \([i - RR, i - LL]\) 区间内的最大值用来状态转移,更新完 \(dp_i\) 后单点修改 \(tree_i\) 的值,方便下一次转移。

时间复杂度 \(O(nlogn)\),可以通过本题。

code(线段树):

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
int w[800005], n, dp[200005], a[200005];
int LL, RR, maxx = -1e18;
bool InRange(int l, int r, int L, int R)
{return (l >= L) && (r <= R);
}
bool OutofRange(int l, int r, int L, int R)
{return (l > R) || (r < L);
}
void pushup(int u)
{w[u] = max(w[u * 2], w[u * 2 + 1]);
}
void update(int u, int l, int r, int L, int R, int x)
{if(InRange(l, r, L, R)){w[u] = x;return ;}if(OutofRange(l, r, L, R)) return ;int mid = l + r >> 1;update(u * 2, l, mid, L, R, x);update(u * 2 + 1, mid + 1, r, L, R, x);pushup(u);
}
int query(int u, int l, int r, int L, int R)
{if(InRange(l, r, L, R)){return w[u];}if(OutofRange(l, r, L, R)){return -1e18;}int mid = l + r >> 1;return max(query(u * 2, l, mid, L, R), query(u * 2 + 1, mid + 1, r, L, R));
}
void build(int u, int l, int r)
{if(l == r){if(l != 0) w[u] = -1e18;else w[u] = 0;return ;}int mid = l + r >> 1;build(u * 2, l, mid);build(u * 2 + 1, mid + 1, r);pushup(u);
}
signed main()
{cin >> n >> LL >> RR;for(int i = 0;i <= n;i ++){cin >> a[i];}build(1, 0, n);dp[0] = a[0];update(1, 0, n, LL, LL, dp[0]);for(int i = LL;i <= n;i ++){dp[i] = query(1, 0, n, i - RR, i - LL) + a[i];// cout << "qweqw0" << i - LL << " " << i - RR << endl;
//        cout << query(1, 0, n, i - RR, i - LL) << endl;update(1, 0, n, i, i, dp[i]);}for(int i = n - RR + 1;i <= n;i ++){maxx = max(maxx, dp[i]);}cout << maxx;
}
http://www.zskr.cn/news/26122.html

相关文章:

  • 【电商行业案例】基于Vaadin全栈Java框架,打造百万级订单的B2B电商SaaS平台
  • 【触想智能】什么是人脸识别一体机,人脸识别一体机主要应用于哪些领域?
  • WPF使用MediaCapture开发相机应用(二、相机预览优化)
  • 自己动手做一款ChatExcel数据分析系统,智能分析 Excel 数据
  • 2025年10月无缝钢管推荐榜:五强对比评测与采购指南
  • 实用指南:构建AI智能体:五十二、反应式智能体:AI世界的条件反射,真的可以又快又稳
  • 微信小程序使用formdata采用multipart方式上传文件
  • 中国项目管理工具市场迎来技术驱动新纪元:Gitee引领双核协作革命
  • 中国企业DevOps工具链选型指南:政务、出海与跨国协作的实战解析
  • 数字媒体技术-培优讲练-知识点总结
  • Jmeter解决响应乱码的问题
  • 实用指南:计算机毕业设计Python农作物产量预测分析 农作物爬虫 农产品可视化 农产品推荐系统 机器学习 深度学习 大数据毕业设计(源码+LW文档+PPT+详细讲解)
  • 告别客服焦虑!用PandaWiki打造724小时AI在线客服
  • Jmeter解决临界部分控制器,锁限流的问题
  • Docker Compose v2.35.1 更新!
  • 【完整源码+数据集+部署教程】医疗设备显示器图像分割系统: yolov8-seg-C2f-SCConv - 详解
  • 2025 年容器 / 结构 / 不锈钢 / 金属 / 过滤器铆焊厂家推荐北京大疆实业:精密制造与全链条服务的实践样本
  • 2025年10月销量第一证明机构推荐榜:尚普与华信人权威对比
  • 国产代码托管平台Gitee的崛起:为何越来越多人选择它而非GitHub?
  • 2025年10月留香沐浴露对比榜:蓝蕨经典香型与四款热门香型横评
  • 2025 最新土工膜生产厂家推荐榜权威发布:聚焦 50 年寿命与 28MPa 强度,涵盖防渗 / HDPE / 复合等全品类标杆企业
  • 使用rabbitmq 进行任务调度
  • byte[](字节数组)
  • 【转】[C#] 要从接口取时间,单个订单查询和批量查询,写一个接口还是两个接口合适?
  • Java设计模式之工厂模式 - 实践
  • CSS 预处理器:Sass的基本用法、核心特性 - 详解
  • 2025 顶管源头厂家最新推荐榜单:F 型混凝土 / 水泥 / 电力 / 矩形 / 市政排水大口径优质供应商精选
  • 2025 年台车炉厂家最新推荐榜,技术实力与市场口碑深度解析,助力企业精准选型天然气/燃气/热处理/全纤维/翻转式台车炉厂家推荐
  • 稀疏网格高斯-埃尔米特数值积分方法
  • 为什么String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上?公共池和堆又是什么?