首页 > 其他分享 >Educational Codeforces Round 148 (Rated for Div. 2) A-D2

Educational Codeforces Round 148 (Rated for Div. 2) A-D2

时间:2023-05-16 18:56:44浏览次数:35  
标签:Educational Rated puts No int NO Codeforces read ans

Educational Codeforces Round 148 (Rated for Div. 2)

 

A. New Palindrome

map<int,int>mp;
void solve(){
    string s;
    mp.clear();
    cin>>s;
    for(int i=0;i<s.size()/2;i++){
        mp[s[i]]++;
    }
    puts(mp.size()>=2?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

B. Maximum Sum

#define int long long
int a[N],l[N],r[N];
void solve(){
    int n=read(),k=read(),sum=0,ans=INF;
    for(int i=1;i<=n;i++)a[i]=read(),sum+=a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=k;i++)
        l[i]=l[i-1]+a[i*2-1]+a[i*2];
    for(int i=1;i<=k;i++)
        r[i]=r[i-1]+a[n-i+1];
    for(int i=0;i<=k;i++)
        ans=min(ans,l[i]+r[k-i]);
    cout<<sum-ans<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

C. Contrast Value

int a[N],d[N];
void solve(){
    int n=read();
    for(int i=1;i<=n;i++){
        a[i]=read();
    }
    int ans=1,fl=0;
    for(int i=2;i<=n;i++){
        d[i]=a[i]-a[i-1];
        if(fl==0){
            if(d[i]<0)fl=-1,ans++;
            if(d[i]>0)fl=1,ans++;
        }else if(fl==1){
            if(d[i]<0)fl=-1,ans++;
        }else if(fl==-1){
            if(d[i]>0)fl=1,ans++;
        }
    }
    cout<<ans<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

D1&&D2. Red-Blue Operations

首先关于k<=n的情况 采用a[1]+k,a[2]+(k-1),a[3]+(k-2)...的贪心策略使最小值最大

如果k>n,也显然是对k的奇偶性讨论

k为偶数的时候,在前(k-n)次的操作可以进行(k-n)/2次-1操作,最后进行n次的上述贪心操作

k为奇数的时候,在k为偶数的基础上不对a[n]进行操作

至于要在哪进行减1操作,我们用计算总值的平均数和对最小值的操作方式,在两个值中取更小值

#define int long long
void solve(){
    int n=read(),q=read(); 
    vector<int>a(n),f(n+1,inf);
    for(int i=0;i<n;i++)  a[i]=read();
    sort(a.begin(),a.end());
    for(int i=0;i<n;i++){
        f[i+1]=min(f[i]+1,a[i]+1);
    }
    int sum=accumulate(a.begin(),a.end(),0ll);
    while(q--){
        int k=read(),ans;
        if(k<n)cout<<min(f[k],a[k])<<' ';
        else {
            int s=sum;
            if((k-n)%2==0){
                ans=f[n]+k-n;
                s+=n*(k+k-n+1)/2-(k-n)/2;
            }else{
                ans=min(a[n-1],f[n-1]+k-(n-1));
                s+=(n-1)*(k+k-n+2)/2-(k-n+1)/2;
            }
            ans=min(ans,s>=0?s/n:(s-n+1)/n);
            cout<<ans<<' ';
        }
    }
    cout<<'\n';
    //puts(ans>0?"YES":"NO");
    //puts(ans>0?"Yes":"No");
}

 

标签:Educational,Rated,puts,No,int,NO,Codeforces,read,ans
From: https://www.cnblogs.com/edgrass/p/17406504.html

相关文章

  • CodeForces 1827 D Two Centroids
    洛谷传送门CF传送门考虑固定一个重心,设\(k\)为重心最大子树大小,答案为\(n-2k\)。构造方法是往最大的子树塞叶子。树的重心有一个很好的性质,就是加一个叶子,重心最多移动一条边的距离。简单证一下,设重心为\(x\),往儿子\(u\)的子树中加叶子。如果\(sz_u>\left\lfloor......
  • CodeForces 1827 B Range Sorting
    洛谷传送门CF传送门考虑拆贡献\(i-1\simi\),发现当\([1,i-1]\)的最大值大于\([i,n]\)的最小值时\(i-1\simi\)产生\(1\)的贡献。考虑枚举左端点\(j\),设\(x=\max\limits_{k=j}^{i-1}a_k\)。设\(i\)及\(i\)以后第一个\(<x\)的数位置是\(p\),那么......
  • Codeforces 1158E - Strange device(交互)
    一个有点烦的\(8\logn\)的做法。大致想法大家都一样:以\(1\)为根,然后先问出每个点深度,再问出每个点的父亲。首先先用一个log的做法问出树高,具体做法是直接令根节点的\(f\)为二分出的\(mid\),看能否覆盖所有点即可,记最大深度为\(mxdep\)。可以在二分过程中顺带着求出深......
  • Codeforces 1423C - Dušan's Railway(树分块)
    首先\(k>3\)当\(k=3\)做,也就是说题目等价于找不超过\(10n\)条路径使得任意两点间的路径都可以表示为选定的这些路径中不相交的三者的并。先考虑链怎么做,关于这个\(3\),很自然的想法是取若干关键点,关键点之间两两连边,其余点再像相邻两关键点连边,因此考虑分块,每\(B\)个点设......
  • Codeforces Round 873 (Div. 2)
    CodeforcesRound873(Div.2)A-DivisibleArray思路:每个数为i时都为i的倍数,前n个数和为Sn=n*(n+1)/2,可知每个数再乘n,Sn必为n的倍数#include<bits/stdc++.h>usingnamespacestd;typedefpair<int,int>PII;typedefpair<string,int>PSI;constintN=3e5+5,INF=0x3f3f3f3......
  • Codeforces Round 873 (Div. 2)(A,B,C)
    A//由求和公式(n*(n-1))/2知道当n为偶数就行,我们将每个序号乘以2就满足了#include<iostream>usingnamespacestd;constintN=210;intt;intn;intmain(){cin>>t;while(t--){cin>>n;for(inti=1;i<......
  • Codeforces Round #358 (Div. 2) -- B. Alyona and Mex (思路水题)
    B.AlyonaandMextimelimitpertestmemorylimitpertestinputoutputSomeonegaveAlyonaanarraycontainingnpositiveintegersa1, a2, ..., an.Inoneoperation,Alyonacanchooseanyelementofthearray......
  • Codeforces Round 869
    \(\texttt{A.AlmostIncreasingSubsequence}\)把\(a_i>a_{i+1}\)的极长下降区间称为一个段,那么显然,一个长度为\(len\)的极长下降区间最多选\(\min(2,len)\)个,并且可以达到这个数,因此记录每个位置属于哪个段,记录个前缀和就好了。#include<bits/stdc++.h>usingnamespaces......
  • VMware Tanzu Kubernetes Grid Integrated Edition (TKGI) 1.16 - 运营商 Kubernetes
    VMwareTanzuKubernetesGridIntegratedEdition(TKGI)1.16-运营商Kubernetes解决方案请访问原文链接:https://sysin.org/blog/vmware-tkgi/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareTanzuKubernetesGridIntegratedEdition(TKGI)使运营商能......
  • Educational Codeforces Round 148 [Rated for Div. 2]A~C
    A#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=60;charc[N];voidrun(){ scanf("%s",c+1); intn=strlen(c+1); map<char,int>st; st[c[1]]++; for(inti=2;i<=n/2;++i) ......