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();
}
}
标签:int,Codeforces,hey,871,solve,ans,inf,left
From: https://www.cnblogs.com/wwww-/p/17973439