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

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();
}

相关文章:

  • 以实例解析汇编语言和高级语言
  • RCE漏洞
  • OpenWrt如何配置WireGuard互联?
  • MyBatis @Param 注解详解:多参数传递与正确使用方式
  • Oracle19c进入EM Express(Oracle企业管理器)详细步骤
  • Map<String,Object>转换为XML报文的方法
  • 网络安全wireshark题目
  • Ubuntu20.04本地配置IsaacGym Preview 4的G1训练环境(一)
  • Linux - 进程通信
  • 11、vue3生命周期?
  • 湖仓一体化及冷、热、实时三级存储
  • Django 5实用指南(十二)异步处理与Celery集成
  • 【YOLOv12改进trick】多尺度大核注意力机制MLKA模块引入YOLOv12,实现多尺度目标检测涨点,含创新点Python代码,方便发论文
  • GCC RISCV 后端 -- GCC Passes 注释
  • 关于sqlalchemy的使用
  • 基于hive的电信离线用户的行为分析系统
  • 第9章:数据导入导出与设置
  • C语言共用体(union)
  • 【DeepSeek】5分钟快速实现本地化部署教程
  • SQL分几种
  • 网站开发用什么网站/百度商家版下载
  • 推广做网站多少钱/网络推广工具有哪些
  • 北京比较好的网站公司/seo是干嘛的
  • 有实力自适应网站建设哪家好/网店推广常用的方法
  • 出口做业务需要浏览国外网站/seo流量排名工具
  • wordpress插件没有设置/深圳百度首页优化