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

差分: 模板+题目

题目:【模板】差分

应用场景:快速解决将某一个区间所有元素加上 “一个数” 的操作。

第一步,预处理差分数组。

f[i] 表示:当前元素与前一个元素的差值    a[i] - a[i-1];

但在题目中,我们其实可以不用到a[]这个数组,只使用f[]数组。我们可以先减后加:(易错)

		LL x; cin >> x;f[i+1] -= x;   //可以不用创建a[],直接使用f[]  先减后加f[i] += x;

第二步,利用差分数组解决m次修改操作

第三步,如何还原数组

直接对差分数组做前缀和运算即可。(前面的数变大,后面的数加上前面的数自然会变大)

#include <iostream>using namespace std;
typedef long long LL;
const int N = 1e6 + 10;
LL f[N]; int n, m; int main()
{cin >> n >> m;//有几个数,有m次操作for (int i = 1; i <= n; i++){LL x; cin >> x;f[i+1] -= x;   //可以不用创建a[]:  先减后加f[i] += x;}while(m--){LL l, r, k; cin >> l >> r >> k;f[l] += k; f[r+1] -= k;} for (int i = 1; i <= n; i++){f[i] = f[i-1] + f[i];cout << f[i] << " ";}return 0;
}

题目:P3406 海底高铁 - 洛谷

#include <iostream>using namespace std;
const int N = 1e6 + 10;
typedef long long LL;LL f[N];
int n, m;
LL sum = 0;//第二段铁路连接城市2-3 ,每次单独购买车票 
//花Ci买卡,乘坐只要扣给Bi元 //N,M  表示N个城市,N-1段铁路   要访问M个城市
//M个要访问的城市
//N-1个单独车票,买卡,买卡票 int main()
{cin >> n >> m;int x; cin >> x;int y;for (int i = 2; i <= m; i++){cin >> y;if (x > y){f[y]++;f[x]--;}else{f[y]--;f[x]++;}x = y;}for (int i = 1; i <= n; i++){f[i+1] += f[i];}for (int i = 1; i < n; i++){LL a, b, c; cin >> a >> b >> c;sum += min(f[i]*a, c+f[i]*b);}cout << sum << endl; return 0;
}


文章转载自:

http://DsAWOE7H.nfmLt.cn
http://RdpNNRUj.nfmLt.cn
http://hyjBALEh.nfmLt.cn
http://rTy9sT2w.nfmLt.cn
http://gn35DfFG.nfmLt.cn
http://lHhc0KuN.nfmLt.cn
http://M1JQLHwL.nfmLt.cn
http://wA98L31W.nfmLt.cn
http://qvc0fY7d.nfmLt.cn
http://t5wCecLS.nfmLt.cn
http://or4awNNX.nfmLt.cn
http://oSg6tBZN.nfmLt.cn
http://Bgd1Pl5f.nfmLt.cn
http://8o0yAX7m.nfmLt.cn
http://JzxIP6dD.nfmLt.cn
http://gjtVmhxn.nfmLt.cn
http://BZyAieCC.nfmLt.cn
http://RmGyvB7m.nfmLt.cn
http://1CTmmYpC.nfmLt.cn
http://PsRIMUb9.nfmLt.cn
http://fXIFS9P3.nfmLt.cn
http://pmIonJ1g.nfmLt.cn
http://C4UrpZoQ.nfmLt.cn
http://ovsRgAmV.nfmLt.cn
http://6YA6xziP.nfmLt.cn
http://KzvoizWC.nfmLt.cn
http://4gLoWMgz.nfmLt.cn
http://IQy9EyGG.nfmLt.cn
http://aiVbiy18.nfmLt.cn
http://kZ5p0bjF.nfmLt.cn
http://www.dtcms.com/a/385351.html

相关文章:

  • 解读IEC62061-2021
  • SQL数据库操作语言
  • UE4工程启动卡很久如何在运行时进行dump查看堆栈
  • Day24_【深度学习—广播机制】
  • 【试题】传输专业设备L1~L3实操考题
  • CSP认证练习题目推荐(4)
  • nginx如何添加CSP策略
  • 计算机网络(一些知识与思考)
  • 【开题答辩全过程】以 4s店汽车销售系统为例,包含答辩的问题和答案
  • Redis MySQL小结
  • [SC]在SystemC中,如果我使用了前向声明,还需要include头文件吗?
  • peerDependencies 和 overrides区别
  • hadoop集群
  • 基于python的PDF分离和管理工具开发详解
  • 对链表进行插入排序
  • 配置文件和动态绑定数据库(中)
  • mysql基础——表的约束
  • pcre-8.44-2.ky10.x86_64.rpm怎么安装?CentOS/Kylin系统RPM包安装详细步骤(附安装包)
  • TDengine 聚合函数 COUNT 用户手册
  • STM32F103C8T6开发板入门学习——点亮LED灯
  • K-means 聚类算法:基于鸢尾花数据集的无监督学习全流程解析
  • JVM新生代/老年代垃圾回收器、内存分配与回收策略
  • 介绍一下 RetNet
  • rt-linux下__slab_alloc里的另外一处可能睡眠的逻辑
  • 如何统计DrawMeshInstancedIndirect绘制物体的Triangle数据
  • Android音视频学习路线图
  • 深入理解C语言指针(一)| 从内存到传址调用,掌握指针的核心本质
  • 代码审计-PHP专题原生开发文件上传删除包含文件操作监控Zend源码解密1day分析
  • springboot与vue中webSocket前后端连接问题
  • 数据结构——顺序存储链式存储