A

int main()
{

	cout<<"Good Luck Zuter"<<endl;
    return 0;
}

B

int main()
{
    string s;
    while(cin>>s)
    {
        if(s=="me") cout<<"you"<<" ";
        else if(s=="?") cout<<"!";
        else cout<<s<<" ";
    }
    return 0;
}

C 两个奇数相加为偶数,两个偶数相加为偶数

int main()
{
	ios::sync_with_stdio(false);
	int n,x;
	cin>>n;
	ll ans=-1;
	for(int i=1;i<=n;i++) {
        cin>>x;
        if(x&1) a[ia++]=x;
        else b[ib++]=x;
    }
    if(ia<2&&ib<2){
        cout<<-1<<endl;
        return 0;
    }
    if(ia>1){
    sort(a,a+ia);
    ans=max(a[ia-1]+a[ia-2],ans);
    }
    if(ib>1){
        sort(b,b+ib);
        ans=max(b[ib-1]+a[ib-2],ans);
    }
	cout<<ans<<endl;
    return 0;
}

D 正数平均越来越小,负数平均越来越大

int main()
{
	ios::sync_with_stdio(false);
	ll sumz=0,nz=0,sumf=0;
	ll n,x;
    double ans=0;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>x;
        if(x>=0){
            sumz+=x;
            nz++;
        }
        else if(x<0){
            sumf+=x;
        }
	}
    ans=sumf;
    if(nz>0)
    {
        ans=sumf+1.0*sumz/nz;
    }
    printf("%.2lf",ans);
    return 0;
}

E

int main()
{
	ios::sync_with_stdio(false);
	int n,m,idx=1;
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=m;i++) cin>>b[i];
	int i=1,j=1;
	for(;i<=n&&j<=m;)
	{
		if(a[i]<b[j])
		{
			c[idx]=a[i];
			a[i++]=idx++;
		}
		else
		{
			c[idx]=b[j];
			b[j++]=idx++;
		}
	}
	while(i<=n)
	{
		c[idx]=a[i];
		a[i++]=idx++;
	}
	while(j<=m)
	{
		c[idx]=b[j];
		b[j++]=idx++;
	}
	for(int i=1;i<=n;i++) cout<<a[i]<<" ";
	cout<<endl;

	for(int i=1;i<=m;i++) cout<<b[i]<<" ";
	cout<<endl;
    return 0;
}

F注意base串为无限环绕的字符串

int main()
{
	ios::sync_with_stdio(false);
	string s;
	cin>>s;
	int n=s.length();
	ll ans=0;
	for(int i=0;i<n;i++)
	{
        int j=i+1;
        while((s[j]-s[j-1]==1||(s[j]=='a'&&s[j-1]=='z'))&&j<n) j++;
        ans+=j-i;
	}
	cout<<ans<<endl;
    return 0;
}

G 单纯相乘计算的话会超出数据范围,所以我们计算2的出现次数

int main()
{
    int n;
    cin>>n;
    a[0]=0;
    for(int i=1; i<=n; i++)
    {
        cin>>a[i];
        b[i]+=b[i-1];
        if(a[i]==2) b[i]++;
    }
    for(int i=n;i>0;i--)
    {    
        c[i]=c[i+1];
        if(a[i+1]==2)
        c[i]++;
    }
    for(int i=1; i<=n; i++)
    {
        if(b[i]==c[i])
        {
            cout<<i<<endl;
            return 0;
        }
    }
    cout<<-1<<endl;
    return 0;
}

H

不会

I前缀和求最大值

int main()
{
	int n;
	cin>>n;
	int ma=0;
	int ans=0;
	while(n--)
	{
		int x,y;
		cin>>x>>y;
		a[x]++;
		a[y+1]--;
		ma=max(ma,y);
	}
	for(int i=0;i<=ma;i++)
	{
		a[i]+=a[i-1];
		ans=max(ans,a[i]);
	}
	cout<<ans<<endl;
    return 0;
}

J感觉是贪心

int main()
{
	int n,k,ma=0;
	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
        ma=max(ma,a[i]);//计算出现的最大值,最后遍历时遍历到这+1就够了
	}
    sort(a,a+n);//排下序,越大的数可选择的余地越多
    for(int i=0;i<n;i++)
    {//寻找这个数最小且未被标记的非负整数
        int x;
        x=a[i]%k;
        while(b[x]&&x<a[i]) x+=k;
        b[x]=true;
    }
	for(int i=0;i<=ma+1;i++)//寻找最小的未被标记的非负整数
	{
		if(!b[i])
		{
			cout<<i<<endl;
			return 0;
		}
	}
    return 0;
}