码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-10-12 21:53:03      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:fine   linker   set   and   cond   targe   first   blog   comment   

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 暴力,二分

标签:fine   linker   set   and   cond   targe   first   blog   comment   

原文地址:http://www.cnblogs.com/sbfhy/p/7643616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!