zoukankan      html  css  js  c++  java
  • 507 LOJ 「LibreOJ NOI Round #1」接竹竿

    思路:这个题是在一个n2的复杂度之上进行了dp方程的优化变形,最后变成线性dp,但还是有一些不懂(菜是本质,%oi爷们)

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=1e6+5;
    typedef long long LL;
    int n,k;
    int col[maxn];
    LL dp[maxn],sum[maxn],val[maxn];
    
    bool Eoln(char ch) {return ch==10||ch==13||ch==EOF;}
    char readc()
    {
        static char buf[100000],*l=buf,*r=buf;
        if (l==r) r=(l=buf)+fread(buf,1,100000,stdin);
        if (l==r) return EOF; else return *l++;
    }
    int readi(int &x)
    {
        int tot=0,f=1;char ch=readc(),lst='+';
        while ('9'<ch||ch<'0') {if (ch==EOF) return EOF;lst=ch;ch=readc();}
        if (lst=='-') f=-f;
        while ('0'<=ch&&ch<='9') tot=tot*10+ch-48,ch=readc();
        x=tot*f;
        return Eoln(ch);
    }
    
    int main()
    {
        readi(n),readi(k);
        for(int i=1;i<=n;i++) readi(col[i]);
        int a;
        for(int i=1;i<=n;i++) readi(a),sum[i]=sum[i-1]+a;
        memset(val,-0x3f,sizeof(val));
        for(int i=1;i<=n;i++){
            dp[i]=dp[i-1];
            dp[i]=max(dp[i],val[col[i]]+sum[i]);
            val[col[i]]=max(val[col[i]],dp[i-1]-sum[i-1]);
        }
        printf("%lld
    ",dp[n]);
        return 0;
    }
  • 相关阅读:
    SQL操作符的优化
    Oracle 模糊查询 优化
    Mysql中的语句优化
    SQL优化
    Pro Git读书笔记
    前端工程化
    前端工程化
    前端工程化
    前端工程化
    前端工程化
  • 原文地址:https://www.cnblogs.com/lalalatianlalu/p/8439718.html
Copyright © 2011-2022 走看看