热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《算法竞赛高阶指导》第3章:差分技术详解与应用

在《算法竞赛高阶指导》第三章中,详细探讨了差分技术的原理及其在实际问题中的应用。本章节通过具体示例,如通过区间操作使序列中的所有元素相等的问题,深入解析了如何利用差分技术高效解决此类问题,并讨论了不同操作方式下的最优解法及其复杂度分析。题目链接:https://www.acwing.com/problem/content/102。该章节不仅提供了理论上的指导,还结合了丰富的实例,帮助读者更好地理解和掌握差分技术的应用技巧。

题目链接:https://www.acwing.com/problem/content/102/

给定一个序列,只能对一个区间加一或者减一,问至少需要多少步使得所有数都变成一致的?有多少种一致序列?

利用差分,对一个区间进行加一或者减一的话,一定是一个差分+1加上另一个差分-1。

代码如下:

#include
using namespace std;
typedef unsigned int ui;
typedef long long ll;
typedef unsigned long long ull;
#define pf printf
#define mem(a,b) memset(a,b,sizeof(a))
#define prime1 1e9+7
#define prime2 1e9+9
#define pi 3.14159265
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define scand(x) scanf("%llf",&x)
#define f(i,a,b) for(int i=a;i<=b;i++)
#define scan(a) scanf("%d",&a)
#define mp(a,b) make_pair((a),(b))
#define P pair
#define dbg(args) cout<<#args<<":"<#define inf 0x7ffffff
inline int read(){
int ans=0,w=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+ch-'0',ch=getchar();
return ans*w;
}
int n,m,t;
const int maxn=1e5+10;
const ll mod=10000;
ll a[maxn],d[maxn];
int main()
{
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
n=read();
f(i,1,n)scanf("%lld",&a[i]);
d[1]=a[1];
f(i,2,n)d[i]=a[i]-a[i-1];
ll p=0,q=0;
f(i,2,n)
{
if(d[i]>0)p+=d[i];
if(d[i]<0)q-=d[i];
}//min(p,q)+abs(p,q)=max(p,q)
cout<}

 



推荐阅读
  • 算术表达式分析与解析技术初探
    本文初步探讨了算术表达式的分析与解析技术,针对作者在职业转型过程中发现自身算法基础薄弱的问题,决定在接下来的三个月内,系统地学习和掌握常用数据结构与算法,以提升个人技术能力。研究内容不仅涵盖了基本的算术表达式解析方法,还深入讨论了其在实际应用中的优化策略,为相关领域的进一步研究奠定了基础。 ... [详细]
  • 本文深入探讨了计算二叉树左子叶节点之和的算法,并提出了优化方案。通过全局变量记录左子叶节点的累加和,确保最终返回结果的准确性。遍历过程中,无论中间返回什么值,关键在于正确识别并累加左子叶节点。此外,我们还分析了不同遍历方法的优劣,为实际应用提供了更多选择。 ... [详细]
  • 基于STM32的智能太阳能路灯设计与华为云IOT集成方案
    基于STM32的智能太阳能路灯设计与华为云IOT集成方案 ... [详细]
  • 运用雅可比迭代法与高斯-赛德尔迭代法解线性方程组的比较分析
    本文对比分析了雅可比迭代法和高斯-赛德尔迭代法在求解线性方程组中的应用效果。通过详细的算法介绍和C语言实现,展示了两种方法的具体步骤和计算过程。实验结果表明,高斯-赛德尔迭代法在收敛速度和计算效率上优于雅可比迭代法,但在某些特定条件下,雅可比迭代法仍具有一定的优势。此外,文章还探讨了不同初始值和矩阵特性对迭代法性能的影响,为实际应用提供了有价值的参考。 ... [详细]
  • H3C防火墙自动构建安全隧道
    实验拓扑结构:两端采用静态IP地址配置。H3C防火墙能够自动构建IPSec安全隧道,确保数据传输的安全性。通过配置防火墙的非信任区域,实现自动化安全连接的建立与维护,有效提升网络防护能力。 ... [详细]
  • 7.2 利用关系运算符与表达式进行数值对比分析
    在C语言中,关系运算符和表达式是进行数值对比分析的基础工具。本节详细介绍了真值的概念及其在编程中的应用,包括布尔类型(_Bool)的引入,以及关系运算符的优先级。通过具体示例,展示了如何在 `while` 循环中使用关系表达式来控制程序流程。这些内容对于理解和编写高效的条件判断逻辑至关重要。 ... [详细]
  • 在软件开发中,应谨慎使用全局变量以规避潜在风险。为减少全局变量的使用,可将仅限于单个源文件内使用的变量声明为静态,同时将相关结构体定义一并纳入该文件。当模块内部的全局变量过多时,建议通过封装或使用局部作用域来替代,以提高代码的可维护性和安全性。 ... [详细]
  • PAT甲级 1068 寻找更多硬币 (30分) 01背包问题与路径优化
    PAT甲级 1068 寻找更多硬币 (30分) 01背包问题与路径优化 ... [详细]
  • LeetCode 算法挑战:最小栈的 Java 实现与优化 ... [详细]
  • 本文深入解析了RTThread操作系统中的HardFault_Handler机制,详细探讨了其在故障定位中的应用与实现方法,为开发者提供了有效的调试工具和策略,有助于提升系统的稳定性和可靠性。 ... [详细]
  • 利用 Java 枚举实现向量操作的枚举化处理 ... [详细]
  • 深入解析 Go 语言中的位操作技术 ... [详细]
  • 浏览器与服务器在网站访问过程中的数据交互分析
    本文分析了浏览器与服务器在网站访问过程中基于HTTP协议的数据交互机制。HTTP协议具有轻量级和高效通信的特点,主要通过GET、HEAD和POST方法进行数据传输。其“请求-响应”模式确保了数据交互的有序性和可靠性,同时支持多种数据格式和内容类型,为现代Web应用提供了坚实的基础。 ... [详细]
  • 本章节聚焦于《微积分B》中多元函数导数(即微分)的核心计算技术,涵盖多元复合函数的求导规则、多元隐函数的导数求解及多元隐函数系统的导数分析。首先,通过回顾一元复合函数的链式法则,逐步引入并深化对多元复合函数链导法的理解与应用。这一部分不仅强化了理论基础,还结合Python编程实践,使学习者能够熟练掌握并灵活运用这些关键的微分技巧。 ... [详细]
  • 深入解析“启动网络接口 eth0”时遇到的问题及解决方案
    在使用 `ifconfig` 命令检查网络接口时,发现只有回环接口(lo)可用,而通过 `ifconfig -a` 命令则显示存在 `eth1` 和 `lo` 接口。进一步检查配置文件时,发现 `eth0` 的配置信息确实存在。本文将详细分析这一问题的原因,并提供相应的解决方法,帮助用户顺利启用 `eth0` 网络接口。 ... [详细]
author-avatar
包括萨u盾根本_173
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有