T1:吃西瓜

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int w;
	cin>>w;
	if((w-2)%2==0&&w!=0&&w!=2){
		cout<<"YES";
	}else{
		cout<<"NO";
	}
	return 0;
}

思路:从判断奇数偶数入手,偶数不能是2。

考察点:if判断,从不同的角度考虑问题。

T2:加或减

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int t,a,b,c,w[10001]={0};
	cin>>t;
	for(int i=0;i<t;i++){
		cin>>a>>b>>c;
		if(a+b==c){
			w[i]++;
		}
	}
	for(int i=0;i<t;i++){
		if(w[i]==1){
			cout<<"+"<<endl;
		}else{
			cout<<"-"<<endl;
		}
	}
	return 0;
}

思路:收集数据后判断加减,用数组0,1表示,集中输出。

考察点:endl用法,收入数据后统一输出。

T3买小猫小狗

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int x,a,b,sum=0;
	cin>>x>>a>>b;
	for(int i=1;i<=x/a;i++){
		for(int j=1;j<=x/b;j++){
			if(x==a*i+b*j){
				sum++;
			}
		}
	}
	cout<<sum;
	return 0;
}

思路:考虑所有情况,使用双重for循环。

考察点:双重for循环,解决鸡兔同笼问题。

T4字符串连接

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int q[130]={};
	string s1,s2;
	cin>>s1>>s2;
	s1=s1+s2;
	for(int i=0;i<s1.length();i++){
		if(q[s1[i]]==0){
			cout<<s1[i];
			q[s1[i]]=1;
		}
	}
	return 0;
}

思路:使用string数组,把两个数组变成一个数组,添加一个int数组,字母重复为1,不重复为0。

考察点:桶排序的代码和应用。

T5优秀的奖励

代码:

#include<bits/stdc++.h>
using namespace std;
struct stu{
	int chinese,maths,english,number,sum;
};
stu p[310];
bool cmp(stu a,stu b){
	if(a.sum==b.sum){
		if(a.chinese==b.chinese){
			return a.number<b.number;
		}else{
			return a.chinese>b.chinese;
		}
		
	}
	return a.sum>b.sum;
}
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>p[i].chinese>>p[i].maths>>p[i].english;
		p[i].sum=p[i].chinese+p[i].english+p[i].maths;
		p[i].number=i;
	}
	sort(p+1,p+1+n,cmp);
	for(int i=1;i<=5;i++){
		cout<<p[i].number<<" "<<p[i].sum<<endl;
	}
}

思路:先使用struct数组收集数据,之后用cmp判断,最后用sort排序排序数组,最后用for循环输出。

考察点:struct函数的代码和应用,分类处理信息的能力,sort分类的代码和应用。

T6不太甜的糖果

代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m,s[230001],ans=230001,sum=0;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	for(int l=1;l<=n;l++){
		for(int r=1;r<=n;r++){
			for(int i=l;i<=r;i++){
				sum=s[i]+sum;
			}
			if(sum>=m){
				if(r-l+1<ans){
					ans=r-l+1;
				}
			}
			sum=0;
		}
	}
	cout<<ans;
	return 0;
}

代码不是正解!

思路:先输入数组,用二分法确定最短数组,前缀判断,正确的和ans比较,判断最小的数组。

考察点:二分查找的代码和应用,搜索的使用,前缀的代码和使用。