AcWing 蓝桥杯集训·每日一题2025·5526. 平衡细菌

5526. 平衡细菌

题意

给定一个序列 ( a i ) (a_i) (ai),每次操作可以选择一个位置 (p),令从 ( a p ) (a_p) (ap) 开始的每个数都加上一个以 (1) 或者 (-1) 为公差的从 ( 1 / − 1 ) (1 / -1) (1/1) 开始的等差数列。求最小化让序列归零的操作次数。

解题思路

这是一道差分模板题,我们从差分角度观察操作的本质:

  • 给一段区间加上 ( 1 , 2 , 3 , 4 , 5 … ) (1, 2, 3, 4, 5 \ldots) (1,2,3,4,5)
  • 在一阶差分数组上 ( 1 , 1 , 1 , 1 , 1 … ) (1, 1, 1, 1, 1 \ldots) (1,1,1,1,1)
  • 在二阶差分数组上 ( 1 , 0 , 0 , 0 , 0 … ) (1, 0, 0, 0, 0 \ldots) (1,0,0,0,0)

所以每次修改的本质实际上是在二阶差分数组上 (+1) 或者 (-1)。要让原序列变成 (0) 序列,等价于要让它的二阶差分数组变成 (0) 序列,因此答案就是二阶差分数组中所有数的绝对值之和。

钦定: d i = a i − a i − 1 , d d i = d i − d i − 1 d_i = a_i - a_{i - 1}, dd_i = d_i - d_{i - 1} di=aiai1,ddi=didi1

ans = ∑ i = 1 n ∣ d d i ∣ \text{ans} = \sum_{i = 1}^{n} |dd_i| ans=i=1nddi

AC Code

// Problem: 平衡细菌
// Contest: AcWing
// URL: https://www.acwing.com/problem/content/5529/
// Memory Limit: 64 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include<bits/stdc++.h>
typedef long long ll; // 确保 ll 在使用前被定义
using namespace std;
using i64 = long long;
#define f for(int i = 0; i < n;++i)
#define ff for(int i = 1; i <= n;++i)
#define int long long 
#define pii pair<int,int>
#define In \ll n; \std::cin >> n;\

const int mod = 1e9 + 7, N = 1e7;void solve(){In; vector<i64> a(n + 1), d(n + 1), dd(n + 1);for(int i = 1; i <= n; i ++) cin >> a[i];for(int i = 1; i <= n; i ++) d[i] = a[i] - a[i - 1];for(int i = 1; i <= n; i ++) dd[i] = d[i] - d[i - 1];i64 ans = 0;for(int i = 1; i <= n; i ++) ans += abs(dd[i]);cout << ans << '\n';
}signed main(){std::ios::sync_with_stdio(false);std::cin.tie(0); std::cout.tie(0);ll T = 1;//std::cin >> T;for(int i = 1; i <= T; ++i) solve();
}

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

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

相关文章

PTA 7-6 列出连通集

题目详情&#xff1a; 给定一个有 n 个顶点和 m 条边的无向图&#xff0c;请用深度优先遍历&#xff08;DFS&#xff09;和广度优先遍历&#xff08;BFS&#xff09;分别列出其所有的连通集。假设顶点从 0 到 n−1 编号。进行搜索时&#xff0c;假设我们总是从编号最小的顶点出…

ES中数据刷新策略refresh

在 Elasticsearch 中&#xff0c;插入数据时的 refresh 参数控制文档在写入后何时对搜索可见&#xff0c;其行为直接影响数据可见性和系统性能。以下是 refresh 参数的三个可选值&#xff08;true、false、wait_for&#xff09;的详细说明及适用场景&#xff1a; 1. refreshtr…

用Python的Pandas库解锁数据科学:从入门到实战

用Python的Pandas库解锁数据科学&#xff1a;从入门到实战 引言 Python的Pandas库&#xff08;名称源自"Panel Data"&#xff09;作为数据科学生态系统的基石&#xff0c;凭借其强大的数据结构和灵活的操作功能&#xff0c;已成为全球超过90%数据工作者的首选工具。…

如何提高域名解析速度?

在搭建网站或使用在线服务时&#xff0c;许多人会问&#xff1a;“为什么我的网站加载速度这么慢?”“如何提高域名解析速度?”“域名解析速度对网站性能有什么影响?”域名解析速度直接影响用户访问网站的体验&#xff0c;因此&#xff0c;了解如何提高域名解析速度尤为重要…

深度学习语义分割数据集全景解析

一、语义分割任务概述 语义分割是计算机视觉领域的核心任务之一&#xff0c;目标是通过算法将图像中的每个像素精准划分到对应的语义类别&#xff08;如道路、车辆、行人等&#xff09;。高质量标注数据集是推动该领域发展的关键因素。本文将系统梳理主流数据集的技术特征与适…

贪心算法一

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是贪心算法&#xff0c;并且掌握贪心算法。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! >…

基于websocket的多用户网页五子棋 --- 测试报告

目录 功能测试自动化测试性能测试 功能测试 1.登录注册页面 2.游戏大厅页面 3.游戏房间页面 自动化测试 1.使用脑图编写web自动化测试用例 2.创建自动化项目&#xff0c;根据用例通过selenium来实现脚本 根据脑图进行测试用例的编写&#xff1a; 每个页面一个测试类&am…

docker学习与使用

一、docker概述 1.docker是什么 是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵循apache2.0协议开源 是在Linux容器里运行应用的开源工具 是一种轻量级的 “虚拟机” Docker的容器技术,可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器…

2025-03-04 学习记录--C/C++-C语言 判断是否是素数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; C语言 判断是否是素数 一、代码 ⭐️ #include <stdio.h> #include <stdbool.h> // 使用 bool 类型// 判断是否是…

如何将飞书多维表格与DeepSeek R1结合使用:效率提升的完美搭档

将飞书的多维表格与DeepSeek R1结合使用&#xff0c;就像为你的数据管理和分析之旅装上一台涡轮增压器。两者的合作&#xff0c;不仅仅在速度上让人耳目一新&#xff0c;更是将智能化分析带入了日常的工作场景。以下是它们如何相辅相成并改变我们工作方式的一些分享。 --- 在…

离散傅里叶变换(Discrete Fourier Transform, DFT)及其在图像处理中的应用

离散傅里叶变换&#xff08;DFT&#xff09;及其在图像处理中的应用 什么是离散傅里叶变换&#xff1f; 离散傅里叶变换&#xff08;Discrete Fourier Transform, DFT&#xff09;是一种强大的数学工具&#xff0c;用于将离散信号从时域&#xff08;或空间域&#xff09;转换…

在 macOS 上使用 CLion 进行 Google Test 单元测试

介绍 Google Test&#xff08;GTest&#xff09;是 Google 开源的 C 单元测试框架&#xff0c;它提供了简单易用的断言、测试夹具&#xff08;Fixtures&#xff09;和测试运行机制&#xff0c;使 C 开发者能够编写高效的单元测试。 本博客将介绍如何在 macOS 上使用 CLion 配…

Oracle SQL优化实战要点解析(11)——索引、相关子查询及NL操作(1)

11.1. 充分利用索引有序特性,避免发生大表上的FTS,以及对中间大数据集的排序。 11.1.1. 适用场景 从一个或多个大表(例如:亿行级或TB级数据量)中过滤出全列大数据集(例如:数百万或千万行数据),对该大数据集按其中某列进行排序,最终,只取最前面的少部分数据(例如:…

软考架构师笔记-计算机网络

1.9 计算机网络 OSI/RM 七层模型 物理层 二进制传输(中继器、集线器) (typedef) 数据链路层 传送以帧为单位的信息(网桥、交换机、网卡) 网络层 分组传输和路由选择(三层交换机、路由器)ARP/RARP/IGMP/ICMP/IP 传输层 端到端的连接(TCP/UDP)在前向纠错系统中&#xff0c;当接…

STM32MP157A单片机移植Linux系统使用python链接云服务器

思维导图 需求分析 stm32mp157a单片机上移植Linux操作系统&#xff0c;包括LCD驱动、触摸驱动、Ethernet/WiFi支持&#xff0c;设备树信息包括ADC、GPIO、LCD&#xff0c;使用QT上位机在PC端显示&#xff0c;通过TCP与stm32交互&#xff0c;将ad数据传输到PC端和云服务器&…

【MySQL】Can‘t connect to server in ‘localhost‘

【问题】连接MySQL数据库时报错&#xff1a; 【原因】没有启动MySQL服务 【解决方法】&#x1f447;&#x1f447;&#x1f447; 1.以管理员身份运行PowerShell 2.执行命令&#xff1a;net start MySQL 提示 “MySQL服务已经启动成功” 就说明成功了&#xff0c;这时再连…

OceanBase-obcp-v3考试资料梳理

集群架构 基本概念 集群: 集群由一个或多个Region组成,Region 由一个或多个Zone组成,Zone由一个或多个OBServer组成,每个OBServer里有若干个partition的Replica。 Region: 对应物理上的一个城市或地域,当OB集群由多个Region组成时, 数据库的数据和服务能力就具备地域…

Vue 系列之:组件通讯

子组件调用父组件方法 1、直接在子组件中通过 this.$parent.event 来调用父组件的方法 父组件&#xff1a; <template><p><child></child></p> </template> <script>import child from ./child;export default {components: {chi…

ComfyUI简介

一、ComfyUI 是什么&#xff1f; ComfyUI 是一款基于节点的图形用户界面&#xff08;GUI&#xff09;&#xff0c;专为 Stable Diffusion 设计。它通过模块化节点连接的方式构建复杂的图像生成工作流&#xff0c;用户可自由组合加载模型、输入提示词、调整采样器等操作模块&am…

我的两个医学数据分析技术思路

我的两个医学数据分析技术思路 从临床上获得的或者公共数据库数据这种属于观察性研究&#xff0c;是对临床诊疗过程中自然产生的数据进行分析而获得疾病发生发展的规律等研究成果。再细分&#xff0c;可以分为独立危险因素鉴定和预测模型构建两种。 独立危险因素鉴定是一直以…