hey_left 8 Codeforces Round 871 (Div. 4)

题目链接

A.

直接比较输入字符串和已知字符串有几个不同即可

#include <bits/stdc++.h>
using namespace std;

void solve(){
    string s;cin>>s;
    int ans=0;
    string t="codeforces";
    for(int i=0;i<10;i++){
        if(s[i]!=t[i])ans++;
    }
    cout<<ans<<'\n';
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}

B.

找最长连续0,直接模拟

#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n;cin>>n;
    vector<int>v(n+1);
    for(int i=1;i<=n;i++)cin>>v[i];
    int ans=0,tmp=0;
    for(int i=1;i<=n;i++){
        if(v[i]==0)tmp++;
        else {
            ans=max(ans,tmp);
            tmp=0;
        }
        if(i==n)ans=max(ans,tmp);
    }
    cout<<ans<<'\n';
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}

C.

分别记录三种情况最小的花费再取小
注意要比较,wa了一发

#include <bits/stdc++.h>
using namespace std;

#define inf 0x3f3f3f3f
void solve(){
    int n;cin>>n;
    string t;
    int ans_1=inf,ans_2=inf,ans_3=inf;
    for(int i=1,m;i<=n;i++){
        cin>>m>>t;
        if(t=="11")ans_3=min(ans_3,m);
        else if(t=="00")continue;
        else if(t=="01")ans_2=min(ans_2,m);
        else if(t=="10")ans_1=min(ans_1,m);
    }
    ans_3=min(ans_3,ans_1+ans_2);
    if(ans_3>=inf)cout<<-1<<'\n';
    else cout<<ans_3<<'\n';
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}

D.

浅写了一个递归,还可以
若能被3整除,判÷3和÷3×2的结果是否满足条件
都不满足就递归下去
记得控制递归数必须大于目标数

#include <bits/stdc++.h>
using namespace std;

#define inf 0x3f3f3f3f
int n,m;
bool f;
void dfs(int x){
    int t3=x/3,t2=t3*2;
    //cout<<"x="<<x<<' '<<"t3="<<t3<<' '<<"t2="<<t2<<'\n';
    if(t3==m||t2==m){
        f=1;
        return ;
    }
    if(t3>m&&t3%3==0)dfs(t3);
    if(t2>m&&t2%3==0)dfs(t2);
}
void solve(){
    cin>>n>>m;
    if(n==m){
        cout<<"YES"<<'\n';
        return ;
    }else if(m>n){
        cout<<"NO"<<'\n';
        return ;
    }
    if(n%3!=0){
        cout<<"NO"<<'\n';
        return ;
    }
    f=0;
    dfs(n);
    if(f){
        cout<<"YES"<<'\n';
    }else cout<<"NO"<<'\n';
}

signed main(){
    int hey_left=1;
    cin>>hey_left;
    while(hey_left--){
        solve();
    }
}
posted @ 2024-01-18 21:57  WW爆米花  阅读(4)  评论(0编辑  收藏  举报