• codeforces C. Functions again


      题意:给定了一个公式,让你找到一对(l,r),求解出公式给定的F值。

      当时没有想到,我把(-1)^(i-l)看成(-1)^i,然后思路就完全错了。其实这道题是个简单的dp+最长连续子序列。

      O(n)求最长连续子序列代码

        ll maxx=0, sum=0, now=0;
        for (int i=1; i<n; i++) {    //数列1-n
            sum+=dp1[i];
            maxx=max(maxx, sum);
            if (sum<0)  sum=0;
        }

      其实我们可以发现,其实正负是交错的,那么我们只要用两个dp(正负相反)的数组来存,再求一次最长连续子序列就好了。

    /*  gyt
           Live up to every day            */
    #include <stdio.h>
    #include <cstdio>
    #include <cmath>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <stack>
    #include <cstring>3
    #include <queue>
    #include <set>
    #include <string>
    #include <map>
    #include <time.h>
    #define PI acos(-1)
    using namespace std;
    typedef long long ll;
    typedef double db;
    const int maxn = 1e5+10;
    const ll maxm = 1e7;
    const int mod = 1000000007;
    const int INF = 1<<30;
    const db eps = 1e-9;
    const ll Max=1e19;
    ll a[maxn], dp1[maxn], dp2[maxn];
    
    void solve() {
        int n;  scanf("%d", &n);
        for (int i=1; i<=n; i++) {
            scanf("%lld", &a[i]);
        }
        memset(dp1, 0, sizeof(dp1));
        memset(dp2, 0, sizeof(dp2));
        int f=1;
        for (int i=1; i<=n-1; i++) {
            dp1[i]=abs(a[i]-a[i+1])*f;
            dp2[i]=abs(a[i]-a[i+1])*(-f);
            f = -f;
        }
        ll maxx=0, sum=0, now=0;
        for (int i=1; i<n; i++) {
            sum+=dp1[i];
            maxx=max(maxx, sum);
            if (sum<0)  sum=0;
        }
        sum=0;
        for (int i=1; i<n; i++) {
            sum+=dp2[i];
            maxx=max(maxx, sum);
            if (sum<0)  sum=0;
        }
        cout<<maxx<<endl;
    }
    int main() {
        int t=1;
        //freopen("in.txt", "r", stdin);
        //scanf("%d", &t);
        for (int T=1; T<=t; T++) {
            solve();
        }
    }
  • 相关阅读:
    mysql存储过程
    命令简写 ~/.bash_aliases
    TestCafe 快速上手 (三)
    TestCafe 快速上手 (二)
    OWASP 文档
    读书笔记
    读书笔记
    类数组转化为真正的数组
    Vue子组件向父组件传递数据
    node.js取参四种方法req.body,req.params,req.param,req.body
  • 原文地址:https://www.cnblogs.com/gggyt/p/7286882.html
Copyright © 2020-2023  润新知