CodeForces 862E Mahmoud and Ehab and the function 暴力,二分

Posted 掉血菜鸡煮熟中

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces 862E Mahmoud and Ehab and the function 暴力,二分相关的知识,希望对你有一定的参考价值。

CodeForces 862E

题意:技术分享     给出长度为 n 的数组 a[] 和长度为 m 的数组 b[],有 q 个询问,每次询问把区间标号 [l,r] 的 a[] 加上 x, 每次求最小的 f(j) 。

tags: 发现有奇偶规律,每次询问其实只会加或减一个 x ,而 b[] 相加减可以前缀和预处理出来。 即 s(a) 可 O(1) 求出, s(b) 是固定的一些值,要求最小的 | s(a)+s(b) | ,只要在 s(b) 中二分   - s(a)  即可。

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a; i<=b; ++i)
#define per(i,b,a) for (int i=b; i>=a; --i)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define MP make_pair
#define PB push_back
#define fi  first
#define se  second
typedef long long ll;
const int N = 200005;

int n, m, q, cnt;
ll a[N], b[N], s1, c[N], sum[N];
ll  getMin(ll s)
{
    int pos = lower_bound(c, c+1+cnt, -s)-c;
    return min(abs(s+c[pos]), abs(s+c[pos-1]));
}
int main()
{
    scanf("%d%d%d", &n, &m, &q);
    rep(i,1,n)
    {
        scanf("%lld", &a[i]);
        if(i&1) s1+=a[i];  else s1-=a[i];
    }
    rep(i,1,m)
    {
        scanf("%lld", &b[i]);
        if(i>1) sum[i]=sum[i-2];
        sum[i]+=b[i];
    }
    c[cnt]=-1e18;
    rep(i,n,m)
    {
        ll  s2=sum[i],  s3=sum[i-1];
        int pos = i-n+1;
        if(n&1)
        {
            s2 -= sum[max(pos-2,0)];
            s3 -= sum[max(pos-1,0)];
            c[++cnt] = -s2+s3;
        }
        else
        {
            s2 -= sum[max(pos-1,0)];
            s3 -= sum[max(pos-2,0)];
            c[++cnt] = s2-s3;
        }
    }
    c[++cnt]=1e18;
    sort(c, c+1+cnt);
    printf("%lld\n", getMin(s1) );
    ll  l, r, x;
    rep(i,1,q)
    {
        scanf("%lld%lld%lld", &l, &r, &x);
        if((r-l+1)&1)
        {
            if(l&1) s1+=x;  else s1-=x;
        }
        printf("%lld\n", getMin(s1) );
    }

    return 0;
}

以上是关于CodeForces 862E Mahmoud and Ehab and the function 暴力,二分的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces - 766B Mahmoud and a Triangle

codeforces 766E Mahmoud and a xor trip

Codeforces Round #396 (Div. 2) C. Mahmoud and a Message DP

Codeforces 862B - Mahmoud and Ehab and the bipartiteness

E - Mahmoud and Ehab and the bipartiteness CodeForces - 862B (dfs黑白染色)

Codeforces Round #396 (Div. 2) C题Mahmoud and a Message(dp)解题报告