zoukankan      html  css  js  c++  java
  • Codeforces 455A

    题目链接:https://codeforces.com/problemset/problem/455/A

    题意:

    给出一个 $n$ 个数字的整数序列 $a[1 sim n]$,每次你可以选择一个 $a[k]$ 将其删除,同时还会删除序列中所有等于 $a[k] + 1$ 和 $a[k] - 1$ 的元素。

    每做这样一次操作,你可以获得 $a[k]$ 的分数,求可以得到的最大分数。

    题解:

    首先,看到 $a[1 sim n]$ 的取值最大不超过 $1e5$,就应当想到在这个上面做文章。

    $f[x][0]$ 表示:值为 $x$ 的元素全部删除,并获得相应的分数,此时能获得的最大分数。

    $f[x][1]$ 表示:值为 $x$ 的元素不删除(或者无法删除),不能获得相应分数,此时能获得的最大分数。

    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int maxn=1e5+10;
    int n,a[maxn],c[maxn];
    ll f[maxn][2];
    int main()
    {
        ios::sync_with_stdio(0);
        cin.tie(0), cout.tie(0);
        
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i], c[a[i]]++;
    
        f[1][0]=1ll*c[1], f[1][1]=0;
        for(int x=2;x<maxn;x++)
        {
            f[x][0]=f[x-1][1]+(ll)x*c[x];
            f[x][1]=max(f[x-1][0],f[x-1][1]);
        }
    
        cout<<max(f[100000][0],f[100000][1])<<endl;
    }
  • 相关阅读:
    UVALive 7276 Wooden Signs
    hdu4291 A Short problem
    A
    hdu4686 Arc of Dream
    thinkphp5 模型的 更新操作
    thinkphp5 模型的 新增操作
    thinkphp 模型的创建
    thinkphp5 增删改查操作
    tp5 的查询构造器
    thinkphp5 数据库的原生查询
  • 原文地址:https://www.cnblogs.com/dilthey/p/10527623.html
Copyright © 2011-2022 走看看