cf1283E——贪心

Posted zsben991126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf1283E——贪心相关的知识,希望对你有一定的参考价值。

想了下dp的做法感觉不太行,我也只配做div3了哎

求最小值的策略:前面没有就把当前的所有人都移到后面去,前面有人就挪到前面去

求最大值的策略:前面没有就挪一个到前面,然后考虑当前位置,下一个位置

/*
dp[i][0]表示向前移动了,dp[i][1]表示不动,dp[i][2]表示后移 
*/
#include<bits/stdc++.h>
using namespace std;
#define N 200005
int n,a[N],cnt[N],has[N];

int main(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i],cnt[a[i]]++;
    for(int i=1;i<=n;i++)if(cnt[i]){
        if(has[i])continue;
        if(has[i-1])continue;
        if(!has[i-1])
            has[i+1]=1;
    }    
    
    int tot=0;
    for(int i=0;i<=n+1;i++)tot+=has[i];
    cout<<tot<<" ";
    
    memset(has,0,sizeof has);
    
    for(int i=1;i<=n;i++)if(cnt[i]){
        if(!has[i-1])cnt[i]--,has[i-1]=1;
        if(cnt[i]){
            if(has[i])has[i+1]=1;//移到后面 
            else {
                has[i]=1;
                if(cnt[i]>1)
                    has[i+1]=1;
            }
        }
        
    }
    tot=0;
    for(int i=0;i<=n+1;i++)tot+=has[i];
    cout<<tot;
}

以上是关于cf1283E——贪心的主要内容,如果未能解决你的问题,请参考以下文章

CF1283E New Year Parties

E. DeadLee 思维 贪心 cf官方答案代码详解

[贪心] aw3774. 亮灯时长(思维+后缀和+代码细节+CF1000B)

CF540 B 贪心

CF115BLawnmower[贪心,模拟]

cf 620C Pearls in a Row(贪心)