美文网首页
前缀和 差分

前缀和 差分

作者: Tsukinousag | 来源:发表于2021-01-26 21:11 被阅读0次

1.前缀和

原题链接

这里的数据不需要两个数组,开两个就ME了,从左往右,从上往下直接滚动s数组就行

#include<iostream>
#include<cstring>

using namespace std;

const int N=5050;

int s[N][N];

int main()
{
    int N,R;
    cin>>N>>R;
    int n=R,m=R;
    for(int i=0;i<N;i++)
    {
        int x,y,w;
        cin>>x>>y>>w;
        x++,y++;
        s[x][y]+=w;
        n=max(n,x),m=max(m,y);//至少是R*R初坐标开始枚举
    }
    //求二维前缀和
    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]+s[i][j];
    //求边长为R的正方形的最大值
    int res=0;
    for(int i=R;i<=n;i++)
        for(int j=R;j<=m;j++)
            res=max(res,s[i][j]-s[i-R][j]-s[i][j-R]+s[i-R][j-R]);
    cout<<res<<endl;
    return 0;
}

2.差分

原题链接

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;
const int N=1e5+10;

int a[N];

int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
        
    //先处理成差分数组
    for(int i=n;i>1;i--)
        a[i]-=a[i-1];
    
    LL p=0,q=0;    
    //b2~bn中找正数总和与负数总和
    for(int i=2;i<=n;i++)
    {
        if(a[i]>0)  p+=a[i];
        else if(a[i]<0) q-=a[i];
    }
    cout<<max(p,q)<<endl;
    cout<<abs(p-q)+1<<endl;
    
    return 0;
}

3.差分与前缀和

原题链接

#include<iostream>
#include<map>

using namespace std;
const int N=1e4+10;

map<pair<int,int> ,bool> existed;
int d[N],c[N];

int main()
{
    int n,p,h,m;
    cin>>n>>p>>h>>m;
    for(int i=1;i<=m;i++)
    {
        int a,b;
        cin>>a>>b;
        if(a>b)swap(a,b);
        if(existed[make_pair(a,b)])continue;
        d[a+1]--,d[b]++;
        existed[make_pair(a,b)]=true;
    }
    for(int i=1;i<=n;i++)
    {
        c[i]=c[i-1]+d[i];
        cout<<c[i]+h<<endl;
    }
}

相关文章

  • 前缀和 差分

    1.前缀和 原题链接[https://www.acwing.com/problem/content/101/] 这...

  • 差分&&前缀和

    前缀和 区间和 记住一个n+1(方便操作) i-1(因为是和相减,所以不能包括i) 一维 二维 pre数组同样变成...

  • 前缀和与差分

    0X00 一维前缀和 0X01 二维前缀和 0X02 一维差分 一维差分推导: 假设我们有数组 a 现在构造一个数...

  • 差分数组 -- Java版

    差分 已知前缀和 S[n], 构造 b[n] 满足条件: S[i] = b1 + b2 + … + b[n] 差分...

  • 一些用前缀思想解决的题(持续完善)

    有前缀和, 前缀GCD, 前缀奇数个数, 前缀偶数个数, 前缀差, 等等, 都要根据自己的思想来去解决!!!,前缀...

  • Binary Index Tree

    二维差分: 单点修改/询问前缀和: 区间修改/询问区间: 二维树状数组:

  • Leetcode1109. 航班预订统计

    前言 最近leetcode的每日刷题都是前缀和类的,比较有连贯性。没有上来搞个hard打击人。本题用到了差分、前缀...

  • 4月

    算法基础课 排序()二分()高精度()前缀和与差分()双指针算法()位运算(), 离散化()区间合并() 链表与...

  • 二维前缀和和差分

    讲二维之前现得知道什么是前缀和,用例题来了解会更好 题目描述:有个数列a1、a2...an,m 次求任意 [l,r...

  • 二十三、elasticSearch前缀搜索/通配符/ngram分

    1、前缀搜索 前缀越短,要处理的doc越多,性能越差,尽可能用长前缀搜索,前缀搜索会进行全扫,就和数据库中的全表扫...

网友评论

      本文标题:前缀和 差分

      本文链接:https://www.haomeiwen.com/subject/mdugzktx.html