前缀数组的介绍和使用

我们先来实现一个二维数组的前缀:

int main()

{

int n, m, q;

cin>>n >>m >> q;

vector<vector<int>> arr(n + 1, vector<int>(m + 1));

for (int i = 1; i <= n; i++) {

for (int j = 1; j <= m; j++) {

cin >> arrij;

}

}

vector<vector<long long>> dp(n + 1, vector<long long>(m + 1));

for (int i = 1; i <= n; i++) {

for (int j = 1; j <= m; j++) {

dpij = dpi - 1j + dpij - 1 + arrij - dpi - 1j - 1;

int x1 = 0, y1 = 0, x2 = 0, y2 = 0;

while (q > 0) {

q--;

cin >> x1 >> y1 >> x2 >> y2;

cout << dpx2y2 - dpx1 - 1y2 - dpx2y1 - 1 + dpx1 - 1y1 - 1 << endl;

}

}

}

return 0;

}

class Solution {

public:

vector<int> productExceptSelf(vector<int>& nums) {

int n=nums.size();

vector<int> f(n),g(n);

f0=1;

gn-1=1;

for(int i=1;i<n;i++){

fi=fi-1*numsi-1;

}

for(int i=n-2;i>=0;i--){

gi=gi+1*numsi+1;

}

vector<int> ret(n);

for(int i=0;i<n;i++){

reti=fi*gi;

}

return ret;

}

};

class Solution {

public:

int subarraySum(vector<int>& nums, int k) {

unordered_map<int,int> hash;

hash0=1;

int sum=0,ret=0;

for(auto e:nums){

sum+=e;

if(hash.count(sum-k)) ret+=hashsum-k;

hashsum++;

}

return ret;

}

};

class Solution {

public:

int pivotIndex(vector<int>& nums) {

int n=nums.size();

vector<int> f(n),g(n);

for(int i=1;i<n;i++){

fi=fi-1+numsi-1;

}

for(int j=n-2;j>=0;j--){

gj=gj+1+numsj+1;

}

for(int i=0;i<n;i++){

if(fi==gi){

return i;

}

}

return -1;

}

};

class Solution {

public:

int findMaxLength(vector<int>& nums) {

int n=nums.size();

unordered_map<int,int> hash;

hash0=-1;

int sum=0,ret=0;

for(int i=0;i<n;i++){

sum+=numsi==0?-1:1;

if(hash.count(sum)) ret=max(ret,i-hashsum);

else hashsum=i;

}

return ret;

}

};

class Solution {

public:

vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {

int m=mat.size(),n=mat0.size();

vector<vector<int>> dp(m+1,vector<int>(n+1));

for(int i=1;i<=m;i++){

for(int j=1;j<=n;j++){

dpij=dpi-1j+dpij-1+mati-1j-1-dpi-1j-1;

}

}

vector<vector<int>> ret(m,vector<int>(n));

for(int i=0;i<m;i++){

for(int j=0;j<n;j++){

int x1=max(0,i-k)+1,y1=max(0,j-k)+1;

int x2=min(m-1,i+k)+1,y2=min(n-1,j+k)+1;

retij=dpx2y2-dpx1-1y2-dpx2y1-1+dpx1-1y1-1;

}

}

return ret;

}

};

相关推荐
Cccp.12331 分钟前
【leetcode】(七)前缀树和贪心算法
数据结构·leetcode·贪心算法
千里码aicood34 分钟前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
码匠许师傅41 分钟前
【C++三方组件】cpp-httplib:一个头文件起 HTTP 服务
开发语言·c++·http
做cv的小昊1 小时前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
لا معنى له2 小时前
World-In-World: World Models in a Closed-Loop World
算法
无名猿2 小时前
new/delete 与 malloc/free:为什么绝对不能混用
c++·内存管理·现代c++·踩坑记录
Logic1013 小时前
C语言/数据结构位运算题解:异或XOR找出多任务下载器中的“独特下载速度“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
2601_962218613 小时前
C++中decltype关键字的实现
开发语言·c++
Discipline10294 小时前
尼泊尔河流流量:天气驱动的预测与高流量风险
人工智能·算法