【模板】二维差分

简介: 【模板】二维差分

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N= 1e3+3;
int n, m, q;
long long a[N][N], b[N][N];
void insert(int x1,int y1,int x2,int y2,int c){
  b[x1][y1]+= c;
  b[x2+1][y1]-= c;
  b[x1][y2+1]-= c;
  b[x2+1][y2+1]+= c;
}
int main(){
  cin>>n>>m>>q;
  for(int i= 1; i<= n; i++)
    for(int j= 1; j<= m; j++){
      cin>>a[i][j];
      insert(i, j, i, j , a[i][j]);
    }
  while(q--){
    int x1, y1, x2, y2, c;
    cin>>x1>>y1>>x2>>y2>>c;
    insert(x1, y1, x2, y2, c);
  } 
  for(int i=1;i<=n;i++){
    for(int j= 1;j<= m; j++){
      b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1];
      cout<<b[i][j]<<" ";
    }
    puts("");
  }
  return 0;
}

insert 函数:

puts(""); 是一条用于输出空字符串的语句

puts 函数puts 是 C 标准库中的一个函数,用于向标准输出设备(通常是终端屏幕)输出一个字符串,并在字符串末尾自动添加换行符(\n)。

空字符串:双引号 "" 包围的部分即为空字符串。空字符串没有可见字符,只包含一个空字符(\0)作为终止符。尽管它看起来似乎没有任何作用,但在某些场景下仍然有意义,如占位、满足语法要求或与外部接口对接时保持一致等。

puts(""); 这一行代码的作用就是向标准输出设备输出一个空字符串,并在其后添加一个换行符。实际效果就是在屏幕上显示一个空行。

虽然从表面上看,输出一个空字符串似乎没有实际意义,但在某些特定情况下可能有用,例如:

  • 为了保持代码结构的一致性,或者在调试时方便注释和取消注释某段代码,可能会保留一个空的 puts 调用。
  • 在某些循环或条件结构中,根据特定条件决定是否输出内容时,可能会先写出一个空的 puts,然后在合适的地方替换为实际的字符串。
  • 当需要频繁与某个期望接收空字符串作为输入的外部接口交互时,使用 puts("") 可能更为直观和便捷。

然而,在大多数实际编程场景中,如果单纯是为了输出一个空行,通常会选择使用更直接的 std::endl(在 C++ 中)或 \n(在 C 或 C++ 中)与输出流操作符结合,

std::cout << std::endl; // C++

std::cout << '\n'; // C 或 C++

printf("\n"); // C

这些写法更为简洁,且不会引入不必要的函数调用开销。


目录
相关文章
|
6月前
|
存储 机器学习/深度学习 算法
【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵
【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵
87 0
|
4月前
|
存储 算法 Python
稀疏矩阵是矩阵中大部分元素为零的矩阵。
稀疏矩阵是矩阵中大部分元素为零的矩阵。
|
6月前
|
存储 人工智能 算法
二维差分与二维前缀和
二维差分与二维前缀和
61 3
|
6月前
【模板】二维前缀和
【模板】二维前缀和
20 2
|
6月前
|
机器学习/深度学习 存储 人工智能
利用前缀和计算二维矩阵子矩阵的和
利用前缀和计算二维矩阵子矩阵的和
66 0
|
6月前
|
JavaScript SoC
leetcode-304:二维区域和检索 - 矩阵不可变
leetcode-304:二维区域和检索 - 矩阵不可变
59 0
|
Python
点云在任意平面上获取二维投影
点云在任意平面上获取二维投影
1139 0
点云在任意平面上获取二维投影
|
人工智能 vr&ar
一维 二维求前缀和、差分
一维 二维求前缀和、差分
53 0
|
机器学习/深度学习 传感器 算法
【图像隐藏】基于分数阶傅里叶变换 DFT实现数字水印嵌入提取附含Matlab代码
【图像隐藏】基于分数阶傅里叶变换 DFT实现数字水印嵌入提取附含Matlab代码