首页 > 其他分享 >Codeforces Round #849 (Div. 4) A~G1

Codeforces Round #849 (Div. 4) A~G1

时间:2023-02-05 13:22:16浏览次数:44  
标签:string G1 int Codeforces cin ai solve Div id

欢乐场hh

A.询问给定串是否是codeforces的子串

void solve(){
    string s="codeforces";
    string a;
    cin>>a;
    string::size_type idx; 
    idx=s.find(a);//在a中查找b.
    if(idx == string::npos )//不存在
        cout <<"NO"<<endl;
    else//存在
        cout <<"YES"<<endl; 
}

B.模拟即可

C.串的两边能加1,0,求原始串最短。

双指针扫一下贪心

void solve(){
    int n;cin>>n;
    string s;cin>>s;
    int l=0,r=n-1;
    if(n==1){
        cout<<1<<endl;return;
    }
    if(n==1){
        cout<<0<<endl;return;
    }
    for(;;){
        if(l==r){
            cout<<1<<endl;return;
        }
        if(l>r){
            cout<<0<<endl;return;
        }
        if(s[l]!=s[r]) {
            l++,r--;
        }
        else {
            cout<<r-l+1<<endl;return;
        }
    }
}

D.定义f(s)为s中出现的不同字符个数,求最大的f(a)+f(b),且a+b==s

预处理前缀和、后缀和然后枚举分段点

void solve(){
    int n;cin>>n;
    string s;cin>>s;
    map<char,int>mp;
    int sum[n+5]={0},sum2[n+5]={0};
    sum[0]=1;
    mp[s[0]]=1;
    for(int i=1;i<n;i++){
        if(mp[s[i]]) sum[i]=sum[i-1];
        else {
            mp[s[i]]=1;
            sum[i]=sum[i-1]+1;
        }
    }
    reverse(s.begin(),s.end());
    mp.clear();
    sum2[0]=1;
    mp[s[0]]=1;
    for(int i=1;i<n;i++){
        if(mp[s[i]]) sum2[i]=sum2[i-1];
        else {
            mp[s[i]]=1;
            sum2[i]=sum2[i-1]+1;
        }
    }
    int ans=sum[0]+sum2[n-2];
    for(int i=1;i<=n-2;i++){
        ans=max(ans,sum[i]+sum2[n-i-2]);
    }
    cout<<ans<<endl;
}

 

E.每次可以同时交换相邻字符的符号,最大化元素和

观察发现偶数个负号可以消没,奇数个符号可以消得只有一个

特判偶数个,然后奇数个答案为Σabs(ai)-2*abs(a1),a1为绝对值最小的数

 

F.每次把下标区间在[L,R]里面的数赋为每个数自身的数码和

比如[15,69]->[6,15]

想起一道题花神游历各国,操作次数也不是太多

set存还不是个位数的下标位置暴力修改即可(是个位数的话就不会在变了,一个数在有限少数步里会变成个位数)

一个坑点是迭代器访问set时如果用erase,it会自己++,要判一下。

#include<bits/stdc++.h>
#define IT set<int>::iterator
using namespace std;
typedef long long ll;
int work(int x){
    int tot=0;
    while(x){
        tot+=x%10;x/=10;
    }
    return tot;
}
void solve(){
    int n,q;
    cin>>n>>q;
    int a[n+5];
    set<int>s;
    for(int i=1;i<=n;i++) cin>>a[i],s.insert(i);
    for(int i=1;i<=q;i++){
        int op;cin>>op;
        if(op==2) {
            int x;cin>>x;
            cout<<a[x]<<endl;
        }
        else {
            int l,r;cin>>l>>r;
            for(set<int>::iterator it=s.lower_bound(l);it!=s.end();){
                int id=*it;
                if(id>r) break;
                a[id]=work(a[id]);
                if(a[id]<=9) {
                    it=s.erase(it);
                }
                else it++;
            }
        }
    }
} 
int main(){
    //freopen("lys.in","r",stdin);
    int t;
    cin>>t;
    while(t--){
        solve();
    }
}

 

G1.计算花费为ai+i,排序完贪心即可。

G2,现场想了一个一次考虑两次操作的想法,可以消去新增限制的影响,就是有点麻烦,维护

ai+i+aj+j,ai+i+n-j+1+aj,n-j+1+aj+n-1+ai的最小值,没写出来。

标签:string,G1,int,Codeforces,cin,ai,solve,Div,id
From: https://www.cnblogs.com/liyishui2003/p/17093243.html

相关文章

  • 2.3 Codeforces Round #849 (Div. 4)
    记录一下第一次可以写到G1,只剩一道题就可以ak,虽然是div4,不过也值得开心一下。A-CodeforcesCheckingvoidsolve(){ charc; cin>>c; strings="codeforces"; ......
  • Educational Codeforces Round 142 (Rated for Div. 2)(C,D)
    EducationalCodeforcesRound142(RatedforDiv.2)(C,D)CC这道题的大意是题目大意是给你一个任意的排序,我们要把这个排序通过任意个操作变成一个有序的排序操作是,选择......
  • Codeforces Round #838 (Div. 2)-D. GCD Queries-GCD、交互
    题目:https://codeforces.com/problemset/problem/1762/D有一个0~n-1的排列,你要在至多2n次询问中找到两个位置x,y,使得\(p_x,p_y\)至少有一者为0.每次询问可以问两个不同的i......
  • CodeForces - 234E Champions' League(模拟)
    Description: Intheautumnofthisyear,twoRussianteamscameintothegroupstageofthemostprestigiousfootballclubcompetitionintheworld—theUEFA......
  • CodeForces - 224D Two Strings
    Description:A subsequence oflength |x| ofstring s = s1s2... s|s| (where |s| isthelengthofstring s)isastring x = sk1sk2... sk|x| (1 ≤......
  • codeforces 1047C. Enlarge GCD(数学)
    题意:给出n个数,求出最少删除几个数可以扩大最大公因子。AC代码:#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<set>#include<map>#includ......
  • CodeForces 948A
    DescriptionBobisafarmer.Hehasalargepasturewithmanysheep.Recently,hehaslostsomeofthemduetowolfattacks.Hethusdecidedtoplacesomeshephe......
  • Codeforces 1322 B. Count Subrectangles(贪心)
    题意:给出序列和序列矩阵是由和决定的问你可以从中截取多少个面积为显然可知的一个性质那就是当序列连续长度为,序列连续长度为,时这个部分序列形成的......
  • Codeforces 1322 A. Unusual Competitions
    题意:给出一个含有的字符串,让你可以选择一个区间进行重新排序,问一共选择的区间长度是多少可以使得字符串最后变成我们只需要从头开始遍历然后找到这种字符,并且使得和......
  • Codeforces 1316 B. String Modification
    题意:反转一个字符串,反转规则为从字符串首字母开头,长度为,反转问一个$k$时会得到一个新串,求字典序最小的新串和,如果字典序相同,则输出最小的。比赛时被卡,疯狂,其实举......