首页 > 其他分享 >【牛客周赛】round14赛后总结

【牛客周赛】round14赛后总结

时间:2023-10-12 17:14:38浏览次数:36  
标签:周赛 题意 int ++ 牛客 while num 字符串 round14

碎碎念

赛时没出题(真可恶吖)在上晚自习,补了一下。ACD都套着字符串的外壳,差点直接劝退,后来仔细一读发现和字符串没什么关系...大概字符串的用处是为了劝退我这种有些怂字符串的人叭。

A. 小红的环形字符串

  • 题意:对于给定的环形字符串s,可以删除相邻的两个相同字母,问最多删除多少个字符
  • 思路:相邻删除和头尾删除,注意删之后的相邻如何判断——deque
  • code:
#include<iostream>
#include<queue>
using namespace std;
const int MAXN=1e5+10;
char s[MAXN];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s[i];
    }
    int l=1,r=n,cnt=0;
    while(s[l]==s[r]){
        if(l>=r)break;
        cnt+=2;
        l++;
        r--;
    }
    deque<char>q;
    for(int i=l;i<=r;i++){
        if(q.size() && q.back()==s[i]){
            q.pop_back();
            cnt+=2;
        }
        else if(q.front()==s[r]){
            r--;
            q.pop_front();
            cnt+=2;
        }
        else{
            q.push_back(s[i]);
        }
    }
    cout<<cnt<<endl;
    return 0;
}

B.小红的乘除变换

  • 题意:通过多次将 x 乘以5,或当x 是6的倍数,将 x 除以6 的操作,使x转变为y。问最小操作次数
  • 思路:最小操作次数=(y比x多的⑤的因数个数)+(x比y多的6的因数个数)。当含有其他因子时或这两项存在负数时为-1
  • code
#include<iostream>
#define int long long
using namespace std;
void sol(){
    int x,y,ans=0;
    cin>>x>>y;
    int x5=0,y5=0;
    while(x%5==0){
        x5++;
        x/=5;
    }
    while(y%5==0){
        y5++;
        y/=5;
    }
    if(x5>y5){
        cout<<"-1"<<endl;
        return;
    }
    ans=y5-x5;
    int x6=0,y6=0;
    while(x%6==0){
        x6++;
        x/=6;
    }
    while(y%6==0){
        y6++;
        y/=6;
    }
    if(x6<y6){
        cout<<"-1"<<endl;
        return;
    }
    ans+=x6-y6;
    if(x!=y){
        cout<<"-1"<<endl;
    }
    else{
        cout<<ans<<endl;
    }
    return;
    
}
signed main(){
    int t;
    cin>>t;
    while(t--){
        sol();
    }
    return 0;
}

C.小红的子串

  • 题意:小红拿到了一个长度为n的字符串,她准备选取一段子串,满足该子串中字母的种类数量在[l,r]之间。小红想知道,一共有多少种选取方案?
  • 思路:双指针
  • code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
 
const int N = 1e6 + 10;
int n, l, r, num;
char S[2 * N];
 
int solve(int m){
    int b[26], res = 0, num = 0;
    memset(b, 0, sizeof b);
    for(int i = 0, j = 0 ; i < n ; i ++){
        b[S[i] - 'a'] ++;
        if(b[S[i] - 'a'] == 1)  ++ num;
        while(num > m){
            b[S[j] - 'a'] --;
            if(b[S[j] - 'a'] == 0)  num --;
            ++ j;
        }
        res += i - j + 1;
    }
 
    return res;
}
signed main(){
    scanf("%d%d%d%s", &n, &l, &r, S);
    printf("%lld\n", solve(r) - solve(l - 1));
 
    return 0;
}

D.回文权值和(总算没小红了)

  • 题意:定义一个字符串的权值为:长度为3的回文子串的数量。
    求长度为n的、仅由小写字母组成的所有字符串的权值之和。答案对10^9+7取模。
  • 思路:第一和第三位相同,其余位置任选,所以26^(n-1)种,这两个相同的位置的话有n-2种可能。
    所以总共为(n-2) * qpow(26,n-1)

标签:周赛,题意,int,++,牛客,while,num,字符串,round14
From: https://www.cnblogs.com/muyi-meow/p/17759932.html

相关文章

  • 牛客提高模拟赛第四场 T3
    给你一个数\(n\),让你从\(n\)中取出若干数合并成\(x\),剩下数合并成\(y\),求对于所有取法\(x+y\)的和例如\(12345\)可以拿出\(24\),剩下\(135\),此时会对答案产生\(24+135\)的贡献。而\(42,153\)或\(23,15\)是不合法的\(n\leq10^{10^5}\)显然\(\sumx......
  • 2023牛客OI赛前集训营-提高组(第二场)B.出租
    2023牛客OI赛前集训营-提高组(第二场)B.出租B-出租_2023牛客OI赛前集训营-提高组(第二场)(nowcoder.com)目录2023牛客OI赛前集训营-提高组(第二场)B.出租题目大意思路题目大意在一条路上有\(n\)个栋楼,每栋楼上有\(k\)个房间出租。现在有\(m\)次询问,每次有两个数字\(x,y\)......
  • 牛客刷Java记录第6天
    第一题一个文件中的字符要写到另一个文件中,首先需要()。ASystem.out.print(buffer[i]);BFileOutputStreamfout=newFileOutputStream(this.filename);CFileInputStreamfin=newFileInputStream(this.filename);DSystem.in.read(buffer);关键词:首先文件A->内......
  • Solution of 牛客集训提高组第三场2023B 摆渡车
    \(\text{Description}\)有\(n\)个乘客要依次经过检票口等待摆渡车,其中第\(i\)个人的重量为\(a_i\),摆渡车载重为\(M\)。当乘客\(i\)通过检票口时摆渡车来了则他能优先登上摆渡车。剩下的\(1\simi-1\)则尽可能多上人到摆渡车上。对于每个\(i\)求如果在......
  • 2023牛客OI赛前集训营-提高组(第三场)C.分糖果
    2023牛客OI赛前集训营-提高组(第三场)C.分糖果目录2023牛客OI赛前集训营-提高组(第三场)C.分糖果题目大意做法对于\(30pts\)对于\(20pts\)对于\(100pts\)C-分糖果_2023牛客OI赛前集训营-提高组(第三场)(nowcoder.com)题目大意求前\(i(i\in[1,n])\)个数分成\(k\)个连续的区......
  • 周赛 Round 14 2023.10.3
    内部比赛链接:周赛14A.修改序列modify考虑且最小值和最大值之差最多为\(1\),那么最终序列肯定呈均分状态。又因为最终序列总和不变,则可以算出均分状态下的每一个值。然后每个数\(A_i\)则变成距离它最近的最终序列值就行。B.表示法knuth模拟题,注意需要在除了前缀ten之......
  • 牛客刷java记录第5天
    第一题,下列代码运行结果是?classX{Yy=newY();publicX(){System.out.print("X");}}classY{publicY(){System.out.print("Y");}}publicclassZextendsX{Yy=newY();publicZ(){......
  • 2023中大厂Android面试八股文合集,GitHub,牛客,leetcode已爆火!
    前言金九银十已过半,不知道大家现在都到哪个阶段了,有没有已经找到心仪的工作的朋友?有没有还没准备好面试在各大平台找资料临时抱佛脚的朋友?或是现在在准备,想要明年金三银四跳槽的朋友?不管你是现在急切找工作还是找资料备战,我都非常推荐你看看我花2个多月从GitHub,牛客,leetcode上为大......
  • 2023牛客国庆集训派对day8/牛客2020年暑期多校day8
    Preface妈的多校都是些什么题啊,一场比赛后三小时全程啥也干不了只能划划水,最后开榜就看手速排名,给他唐完了这场开场和前期久违地顺利,按难度开了三道签到后队里讨论了下秒出了A的正解我爬上去摸了会虽然nt错误频发WA了两发,但后面还是成功抢到了A题的一血,同时徐神和祁神坐在下面......
  • 牛客刷Java记录第四天
    第一题,单选题classCarextendsVehicle{publicstaticvoidmain(String[]args){newCar().run();}privatefinalvoidrun(){System.out.println("Car");}}classVehicle{privatefinalvoidrun()......