温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ACwing中的二维前缀和怎么用

发布时间:2021-09-18 14:02:52 阅读:144 作者:柒染 栏目:编程语言
Windows服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章将为大家详细讲解有关ACwing中的二维前缀和怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int N=5010;

int n,m;
int s[N][N];

int main(){
    int cnt,R;
    cin>>cnt>>R;
    //优化
    R=min(5001,R);
    //防止右下角空
    n=m=R;
    
    while(cnt--){
        int x,y,w;
        cin>>x>>y>>w;
        x++,y++;
        n=max(n,x);
        m=max(m,y);
        s[x][y]+=w;
    }
    
    //预处理前缀和
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
        }
    }
    int wmax=0;
    //枚举所有变长为R的矩形,枚举矩形右下角坐标(i,j)
    for(int i=R;i<=n;i++){
        for(int j=R;j<=m;j++){
            wmax=max(wmax,s[i][j]-s[i-R][j]-s[i][j-R]+s[i-R][j-R]);
        }
    }
    cout<<wmax;
    return 0;
}

关于ACwing中的二维前缀和怎么用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/zhengbaby66/blog/5010383

AI

开发者交流群×