P2627 [USACO11OPEN] Mowing the Lawn G

news/2025/2/11 19:13:03/文章来源:https://www.cnblogs.com/wh2011/p/18710318

\(f_i\) 表示对于前 \(i\) 个数,\(i\) 选了, \(g_i\) 表示对于前 \(i\) 个数,\(i\) 没选,\(sum_i=\sum_{j=1}^{i}e_j\) 我们可以列出状态转移方程。

\[\begin{aligned}g_i&=\max\{g_{i-1},f_{i-1}\}\\f_i&=\max\limits_{i-k\le j<i}\{g_j+(sum_i-sum_{j})\}\end{aligned} \]

然后化简一下

\[\begin{aligned}g_i&=\max\{g_{i-1},f_{i-1}\}\\f_i&=\max\limits_{i-k\le j<i}\{g_j-sum_{j}\}+sum_i\end{aligned} \]

对于 \(g\) 直接做,对于 \(f\) 可以用滑动窗口,单调队列来做。

//#define FILE_INPUT
#include <iomanip>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#define int long long
using namespace std;bool Mbe;#define rep(i, a, b) for (int i = a, END##i = b; i <= END##i; i++)
#define per(i, a, b) for (int i = a, END##i = b; i >= END##i; i--)
#define DEBUG(x) cerr << #x << " = " << x << '\n'using LL = long long;
using ULL = unsigned long long;inline LL read() {LL s = 0, fu = 1; char ch = getchar();while (ch < '0' || ch > '9') ch == '-' ? fu = -1 : 0, ch = getchar();while (ch >= '0' && ch <= '9') s = (s << 1) + (s << 3) + (ch ^ 48), ch = getchar();return s * fu;
}const int Mod = 1e9 + 7;
const int Inf = 0x3f3f3f3f;
const LL InfLL = 0x3f3f3f3f3f3f3f3f;const int N = 1e5 + 10;
int n, k, a[N], f[N], g[N], sum[N], q[N], hh, tt; // 留个下界 0void Init() {
}void Solve() {n = read(), k = read();rep(i, 1, n) a[i] = read(), sum[i] = a[i] + sum[i - 1];rep(i, 1, n) {g[i] = max(g[i - 1], f[i - 1]);while (hh <= tt && i - k > q[hh]) hh++;f[i] = g[q[hh]] - sum[q[hh]] + sum[i];while (hh <= tt && g[q[tt]] - sum[q[tt]] < g[i] - sum[i]) tt--;q[++tt] = i;}rep(i, 1, n) printf("%lld %lld\n", f[i], g[i]);printf("%lld\n", max(f[n], g[n]));
}bool Med;signed main() {#ifdef FILE_INPUTfreopen("input.in", "r", stdin);
#endifint T = 1;
//	T = read();while (T--) {Init();Solve();}cerr << "Memory: " << fixed << setprecision(3) << (&Med - &Mbe) / 1048576.0 << " MB\n";cerr << "Time: " << fixed << setprecision(3) << 1e3 * clock() / CLOCKS_PER_SEC << " ms\n";return 0;
}

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

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

相关文章

nodejs如何处理Token?一文深入浅出JWT签名验签

关于token的那些事儿,一文深入浅出JWT签名验签前端开发中关于Token的那些事儿:深入浅出JWT签名验签 作为前端也要懂JWT,首先了解两个概念JWK JWT JWK JWK(RSA JSON Web Key)是一种用于表示 RSA 公钥或私钥的 JSON 对象,JWK 是 JSON Web Token (JWT) 和 JSON Web Encrypti…

前端开发中关于Token的那些事儿:深入浅出JWT签名验签

关于token的那些事儿,一文深入浅出JWT签名验签前端开发中关于Token的那些事儿:深入浅出JWT签名验签 作为前端也要懂JWT,首先了解两个概念JWK JWT JWK JWK(RSA JSON Web Key)是一种用于表示 RSA 公钥或私钥的 JSON 对象,JWK 是 JSON Web Token (JWT) 和 JSON Web Encrypti…

Eddystone 与 iBeacon

Eddystone 与 iBeacon 蓝牙信标 (Beacons) 是一种单向通讯方式,所以一般的用途就是发送提醒。 Beacons 是指使用蓝牙4.0(BLE)技术发射信号的小设备。 目前存活的 Beacons 标准有两个,分别是 Google 的 Eddystone 和 Apple 的 iBeacon. Eddystone Eddystone 是谷歌基于 Beac…

OrangePi 5 编译 Android12 源码

OrangePi 5 编译 Android12 源码 材料准备 源码下载地址 Orange Pi - Orangepi官方教程编译环境 在以下环境的 Ubuntu 虚拟机编译通过,基于 VMware Workstation 17 Pro.系统版本:ubuntu-18.04.6-lts-desktop-amd64; CPU:i5-8400,为 VM 分配 4 核; 内存:8G RAM + 16G swap…

Maui 基础 - Preferences 存储和检索应用程序的首选项

Maui 基础 Preferences 是 .NET MAUI 提供的一个静态类,用于存储和检索应用程序的首选项(即设置或配置)。它提供了一种简单的键值对存储机制,可以跨平台使用。每个平台使用其本地的存储机制来实现这些功能,例如:iOS 使用 NSUserDefaults Android 使用 SharedPreferences …

另辟新径实现 Blazor/MAUI 本机交互(一)

本系列由浅入深逐个文件解析工作原理 目录:WebViewNativeApi.cs NativeApi.cs MainPage.xaml.cs 实战 串口 小票机 蓝牙WebViewNativeApi.cs WebViewNativeApi.cs 文件中的代码实现了一个 NativeBridge 类,用于在 .NET MAUI 应用程序中的 WebView 和本地代码之间进行通信。以下…

AI 如何重塑劳动力市场:基于 Claude 数据的深度分析

前言 本文翻译自 Anthropic 今天发布的 The Anthropic Economic Index ,经济指数报告,这份报告基于 Claude 的数据对目前的 AI 使用情况做了汇总。 引言 在未来的几年里,人工智能系统将对人们的工作方式产生重大影响。因此,我们推出了 Anthropic Economic Index,这是一个旨…

Nacos Python SDK 强势来袭,动态管理大模型 Prompt!

Nacos 从 0.8.0 版本开始就一直参与 Python 生态建设,努力作为 Python 生态中分布式微服务发现和配置管理的解决方案一直往前演进。目前随着 AI 领域的发展,Nacos 社区的 Python 开发者用户越来越多,因此这次我们迭代了 Python 的 GA 稳定版本,对不少历史问题做了修复以及易…

踩坑记录-二分搜索的不同情况

二分搜索的不同情况 二分搜索可以用来查找满足条件的值,但是满足条件的值可能只有1个,也可能有多个。比如查找1的索引,对于【1,1,2,2】来说,就有2个。一般要求的就是:满足条件最大值/满足条件最小值。 二分搜索详细介绍可以参考:https://programmercarl.com/0704.二分…

《ESP32-S3使用指南—IDF版 V1.6》第五章 搭建开发环境

第五章 搭建开发环境 1)实验平台:正点原子DNESP32S3开发板 2)章节摘自【正点原子】ESP32-S3使用指南—IDF版 V1.6 3)购买链接:https://detail.tmall.com/item.htm?&id=768499342659 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/esp32/AT…

内测之家介绍

内测之家:助力应用开发与迭代的专业平台内测之家是一款功能强大且全面的应用内测与管理平台,专为 iOS 和 Android 开发者打造,旨在为他们提供便捷高效、安全可靠的一站式服务。无论是从资源安全到传输安全,还是从数据保护到应用管理、统计分析,内测之家都展现出卓越的能力…

如何用好 AI 编码工具,让通义灵码帮你做更多工作

通义灵码,是阿里云与通义实验室联合打造的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,提供代码智能生成、研发智能问答能力。通义灵码,是阿里云与通义实验室联合打造的智…