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

前缀和与差分专题

领地选择

(二维前缀和)

作为在虚拟世界里统帅千军万马的领袖,小 Z 认为天时、地利、人和三者是缺一不可的,所以,谨慎地选择首都的位置对于小 Z 来说是非常重要的。

首都被认为是一个占地 C×C 的正方形。小 Z 希望你寻找到一个合适的位置,使得首都所占领的位置的土地价值和最高。

第一行三个整数 N,M,CN,M,C,表示地图的宽和长以及首都的边长。

接下来 NN 行每行 MM 个整数,表示了地图上每个地块的价值。价值可能为负数。

输入数据

3 4 2
1 2 3 1
-1 9 0 2
2 0 1 1

 输出数据

1 2

AC代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int n, m, c;
	cin >> n >> m >> c;
	vector<vector<int>> a(n+1, vector<int>(m+1, 0)), g(n+1, vector<int>(m+1,0));
	for (int i=1; i<=n; i++){
		for (int j = 1; j<=m; j++){
			cin >> a[i][j];
			g[i][j] = g[i][j-1]+g[i-1][j]-g[i-1][j-1]+a[i][j];
		}
	}
	int max = -1e9, mai=0,maj=0;
	for (int i = c; i<=n; i++){
		for (int j = c; j <=m; j++){
			int ans = g[i][j]-g[i][j-c]-g[i-c][j]+g[i-c][j-c];
			if (ans > max){
				max = ans;
				mai = i-c+1;
				maj = j-c+1;
			}
		}
	}
	cout << mai << " " << maj << endl;
	return 0;
}

地毯 

(二维差分)

在 n×n 的格子上有 mm 个地毯。

给出这些地毯的信息,问每个点被多少个地毯覆盖。

第一行,两个正整数 n,mn,m。意义如题所述。

接下来 m 行,每行两个坐标 (x1,y1) 和 (x2,y2),代表一块地毯,左上角是 (x1,y1),右下角是 (x2,y2)。

输入数据

5 3
2 2 3 3
3 3 5 5
1 2 1 4

 输出数据

0 1 1 1 0
0 1 1 0 0
0 1 2 1 1
0 0 1 1 1
0 0 1 1 1

注意差分方式为下表,以5*5中的点一(1,1),点二(3,3)为例

12345
11-1
2
3
4-11
5

 这里a的数组为什么要开n+2呢,因为当x2,y2为边界时得在它+1的位置-1.

AC代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	int n, m;
	cin >> n >> m;
	vector<vector<int>> a(n+2, vector<int>(n+2, 0)), g(n+2, vector<int>(n+1, 0));
	for (int i = 0; i<m; i++){
		int x1, x2, y1, y2;
		cin >> x1 >> y1 >> x2 >> y2;
		a[x1][y1]++;
		a[x2+1][y1]--;
		a[x1][y2+1]--;
		a[x2+1][y2+1]++;
	}
	for (int i = 1; i<=n; i++){
		for (int j = 1; j<=n; j++){
			g[i][j] = g[i-1][j]+g[i][j-1]-g[i-1][j-1]+a[i][j];
			cout << g[i][j] << " \n"[j==n];
		}
	}
	
	return 0;
}

http://www.kler.cn/a/468949.html

相关文章:

  • 如何查看服务器上的MySQL/Redis等系统服务状态和列表
  • 深入探讨 Android 中的 AlarmManager:定时任务调度及优化实践
  • 开源平台Kubernetes的优势是什么?
  • 国产编辑器EverEdit - 两种删除空白行的方法
  • 前端小案例——520表白信封
  • 如何利用PHP爬虫按关键字搜索淘宝商品
  • 继承(4)
  • OpenLinkSaas使用手册-待办事项和通知中心
  • 用opencv实现像素统计
  • 代码随想录算法训练营第二十四天-回溯算法-90. 子集II
  • 【Vaadin flow 实战】第2讲-深入理解vaadin flow技术路线原理
  • TensorFlow深度学习实战(3)——深度学习中常用激活函数详解
  • 产品线上交付阶段出现的两次显著Bug分析
  • css 关于flex布局中子元素的属性flex
  • 服务器开发 的设计模式(Design Patterns)核心知识
  • 出现 Error during query execution: StatementCallback; bad SQL grammar 解决方法
  • windows C#-确定字符串是否表示数值
  • 【信息系统项目管理师】高分论文:论信息系统项目的风险管理(资金管控系统)
  • Go语言的 的集合框架(Collections Framework)基础知识
  • 网络安全【C10-2024.10.1】-sql注入基础
  • Oracle DG备库数据文件损坏修复方法(ORA-01578/ORA-01110)
  • 【人工智能数据科学与数据处理】——深入详解大数据与数据库技术之非关系型数据库:MongoDB 的关键概念、核心原理、示例及主要应用
  • 使用Python构建智能医疗诊断系统
  • 解决sublime编译无法输入问题
  • PDF2Audio - 阅读 PDF 的新方式
  • 【工具整理】WIN换MAC机器使用工具整理