首页 > 其他分享 >Codeforces Round #611 (Div. 3) E

Codeforces Round #611 (Div. 3) E

时间:2022-11-02 14:35:27浏览次数:49  
标签:int 611 Codeforces st ++ && Div mx dp

E. New Year Parties

对于最大值 我们显然可以sort之后 贪心一下即可 正确性显然
对于最小值 我们发现会有三种情况 一种是三个挨在一起 一种是两个挨在一起 还有一种就是两个只隔了一个空隙
我们直接dp求解即可

void solve(){
    int n;cin>>n;
    vector<int>a(n),v(n+1);
    for(int i=0;i<n;i++)cin>>a[i],v[a[i]]++;
    vector<int>b=a;
    sort(all(b));
    b.erase(unique(all(b)),b.end());
    vector<bool>st(n+1);
    int mx=0;
    for(auto i:b){
        if(!st[i-1]&&v[i]){
            mx++;
            v[i]--;
            st[i-1]=1;
        }
        if(!st[i]&&v[i]){
            mx++;
            v[i]--;
            st[i]=1;
        }
        if(!st[i+1]&&v[i]){
            mx++;
            v[i]--;
            st[i+1]=1;
        }
    }
    vector<int>dp(n+10,INF);
    a.clear();a.push_back(0);
    for(auto i:b)a.push_back(i);
    dp[0]=0;
    for(int i=1;i<a.size();i++){
        dp[i]=min(dp[i],dp[i-1]+1);
        if(a[i]==a[i-1]+2&&i>=2)dp[i]=min(dp[i],dp[i-2]+1);
        if(a[i]==a[i-1]+1&&a[i-1]==a[i-2]+1&&i>=3)dp[i]=min(dp[i],dp[i-3]+1);
        if(a[i]==a[i-1]+1&&i>=2)dp[i]=min(dp[i],dp[i-2]+1);
    }
    cout<<dp[(int)a.size()-1]<<' '<<mx<<endl;
}

标签:int,611,Codeforces,st,++,&&,Div,mx,dp
From: https://www.cnblogs.com/ycllz/p/16850910.html

相关文章

  • div'可拖拽宽度
    <template><divclass="x-handle"@mousedown="mouseDown"></div></template><script>exportdefault{name:'HandleEvent',data(){return{lastX:''......
  • J - Just Arrange the Icons CodeForces - 1267J (思维+暴力)
    题意n个软件,每个软件都有种类,而屏幕有容量s(自己决定),有两个限制:一个屏幕只能放s-1或者s个软件一个屏幕上只能防同种的软件求最小的屏幕数。思路枚举s代......
  • 「题解」Codeforces 1322B Present
    看上去异或里面套了层加法不好拆位,但是依然可以对每个二进制位处理。现在考虑第\(k\)位,那么产生贡献的数字对一定满足以下条件之一:第\(k\)位相同且前\((k-1)\)位......
  • 「题解」Codeforces 930E Coins Exhibition
    看到题就先容斥。然后容斥系数太难算了就寄了,大概要分好几种情况讨论,于是就弃了。不容斥也能做。考虑限制将串划分成了若干段,然后一段一段dp.有没有什么好的方法描述这个......
  • Codeforces - 1391C - Cyclic Permutations(思维 + 组合数学 + 数论 + 图论、*1500)
    1391C-CyclicPermutations(⇔源地址)目录1391C-CyclicPermutations(⇔源地址)tag题意思路AC代码错误次数:0tag⇔思维、⇔组合数学、⇔数论、⇔......
  • Codeforces Round #611 (Div. 3) D
    D.ChristmasTrees显然对于一个中间的点要是不能向两边最近的扩展我们直接判定他没有用处了这样我们就有了bfs的做法我们先把原点放进去要是能扩展我们显然可以直接......
  • Codeforces Round #667 (Div. 3) ABCD
    https://codeforces.com/contest/1409A.YetAnotherTwoIntegersProblem题目大意:k∈[1;10]我们每次可以选择a:=a+kora:=a−k问a要经历多少次操作变成b?input......
  • Codeforces 1730 D
    Codeforces1730D题意定义一次“操作”为把字符串$a$的前$k$个字母与字符串$b$的后$k$个字母交换。问能不能经过有限次操作后,让$a=b$。注:$......
  • Educational Codeforces Round 81 (Rated for Div. 2) D
    D.SameGCDs对于题目所给的公式gcd(a,m)=gcd(a+x,m)由辗转相除我们把第二个式子变一下gcd((a+x)%m,m)x的取值范围为[0,m)(a+x)%m也是所以我们可以直接写成gcd(a,m)=g......
  • Codeforces 1670 E. Hemose on the Tree
    题意给你个数p,n=2^p;有一棵树有n个节点,告诉你怎么连边;每个点有个权值,每条边也有个权值,权值需要自行分配,[1,2,3..n...2n-1],总共2n-1个权值;你需要选一个节点,使得他到所......