SDKD Summer Team Contest B

A:点击打开链接

暴力,随机分到的队友代码能力比较强,最后我提供了思路,他实现了。

#include<iostream>

using namespace std;
string s, ss;

bool could(int l1, int l2){
    for(int i =0;i<l1+l2;++i){
        if(s[i]!=s[i+l1+l2]) return false;
    }
    return true;
}

int main(){
    int T;
    cin>>T;
    while(T--){
        cin>>ss;
        s.clear();
        for(int i =0; i<ss.length();++i)
            if((ss[i]>='a'&&ss[i]<='z')||(ss[i]>='A'&&ss[i]<='Z'))
            s+=ss[i];
        //=========================================================
        bool abc=false;

        for(int len1=1;len1<=s.length()/2;++len1){
            for(int len2=1;len2<=s.length()/2-len1;++len2){
                if((len1+len2)*2>=s.length()) continue;
                if(could(len1, len2)==false) continue;

                string sa=s.substr(0, len1);
                string sb=s.substr(len1, len2);
                if(sa==sb) continue;

                if(s.length()==3*sa.length()+2*sb.length()){
                    string ssa=s.substr((len2+len1)*2, len1);
                    if(sa==ssa) { abc=true; goto end;}
                }

                if(s.length()>3*sa.length()+3*sb.length()){
                    int len3=s.length()-3*sa.length()-3*sb.length();
                    string ssc=s.substr((len2+len1)*2, len3);
                    string ssa=s.substr((len2+len1)*2+len3, len1);
                    string ssb=s.substr((len2+len1)*2+len3+len1, len2);
                    //cout<<sa<<" "<<sb<<" "<<ssc<<" "<<ssa<<" "<<ssb<<endl;
                    if(sa==ssa&& sb==ssb&& ssc!=sa &&ssc!=sb) { abc=true; goto end;}
                }
            }
        }
        end:
        if(abc) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}
J: 点击打开链接
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 50 + 5;
int res[maxn];
int main()
{
    int T;
    cin >> T;
    while(T--)
    {
        int n;
        cin >> n;
        memset(res,0,sizeof(res));
        for(int i = 1; i <= n; ++i) scanf("%d",&res[i]);
        int sum =0;
        for(int i = 2; i < n;++i)
        {
            //cout << res[i-1] << " " << res[i] <<" " << res[i+1] << endl;
            if(res[i] > res[i-1] && res[i] > res[i+1]) ++sum;
        }
        cout << sum << endl;
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值