牛牛变魔术

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll T,a,b,t;
    scanf("%lld",&T);
    while(T--)//比for循环更方便
    {
        scanf("%lld%lld%lld",&a,&b,&t);
        ll s=0,k=2*(a+b);
        if(a==t||b==t) printf("0\n");//相等则直接0次
        else if (t%2) printf("-1\n");//t为奇数则无法达到
        else if(t<=k) printf("1\n");//1<=t<=2*(a+b)则1次
        else 
        {
            while(t>k)
            { 
                k*=2;
                s++;
            }
            printf("%lld\n",s+1); 
        }
    }            
        return 0;
}

撸串

//解法一(string)
#include<bits/stdc++.h>
using namespace std;
string str="NowCoder";
int main()
{
    int n;
    string s;
    cin>>n;
    while(n--)
    {
        cin>>s;
        int i=0,t=0;
        for(i;i<s.size();i++)//也可以s.length()
        {
            if(s[i]==str[t])t++;
            if(t==8){cout<<"QAK"<<endl;break;}
        }
        if(t<8)cout<<"QIE"<<endl;
    }
    return 0;
}
//解法二(char)
#include <bits/stdc++.h>
using namespace std;
char ch[9]="NowCoder";
bool findstr(char *s){
    int j=0;
    for(int i=0;i<(int)strlen(s);i++)//strlen()函数使用对象必须是字符数组(指针)
        if(s[i]==ch[j]) j++;
    if(j==(int)strlen(ch)) return true;
    else return false;
}
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        char s[200];
        cin>>s;
        if((int)strlen(s)==8){
            if(strcmp(s,ch)==0)cout<<"QAK"<<endl;
            else cout<<"QIE"<<endl;
        }
        else{
            if(findstr(s))cout<<"QAK"<<endl;
            else cout<<"QIE"<<endl;
        }
    }
    return 0;
}

c/c++中的sizeof()、strlen()、length()、size()

GAME

不同字符串个数

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int n;
    string a;
    cin >> n;
    set<string> s;//也可以map<string, int> s;
    while(n--) cin >> a, s.insert(a);//while(n--) cin >> a,s[a] ++;
    cout << s.size();
    return 0;
}

cin.tie(0),cout.tie(0)、 set函数

寻找子串

//解法一
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1,s2;
    cin>>s1>>s2;
    int i=0,t=0;
    for(i; i<s1.size(); i++)
    {
        int m=0;
        for(int j=0; j<s2.size(); j++)
        {
            if(s1[i+j]==s2[j])m++;
        }
        if(m==s2.size()){t=1; break;}
    }
    if(t==1) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
    return 0;
}
//解法二(strstr)
#include<bits/stdc++.h>
using namespace std;
int main()
{
    char a[1005],b[1005];
    scanf("%s%s",&a,&b);
    if(strstr(a,b)==NULL)
     cout<<"NO"<<endl;
    else cout<<"YES"<<endl;
    return 0;
}

strstr函数和c_str()函数

//解法三(find)
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1,s2;
    cin >> s1 >> s2;
    if(s1.find(s2)> s1.size())
        cout << "NO";
    else cout << "YES";
    return 0;
}

find函数

采购

#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e3+10;
int n,m;
int v[N],w[N],f[N];
 
int main ()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    cin>>v[i]>>w[i];
    for(int i=1;i<=n;i++)
    {
        for(int j=v[i];j<=m;j++)
        {
            f[j]=max(f[j],f[j-v[i]]+w[i]);//背包问题
        }
    }
    cout<<f[m];
    return 0;
}