zoukankan      html  css  js  c++  java
  • 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
    ", 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
    ", getMin(s1) );
        }
    
        return 0;
    }
  • 相关阅读:
    delphi 调用百度地图api
    Delphi XE5 for android 图片缩放和拖动处理
    利用FMX控件的MakeScreenshot过程实现WAIT效果
    老外写的在桌面添加快捷方式(DELPHI XE5 ANDROID)
    第01组 Alpha冲刺(5/6)
    2019 SDN上机第4次作业
    2019 SDN阅读作业
    第01组 Alpha冲刺(4/6)
    第01组 Alpha冲刺(3/6)
    第01组 Alpha冲刺(2/6)
  • 原文地址:https://www.cnblogs.com/sbfhy/p/7643616.html
Copyright © 2011-2022 走看看