关键词:
北京中关村;海淀黄庄;北京大学;清华大学。少儿编程;中小学编程;信息学竞赛;计算机竞赛;NOIP;NOIP竞赛;CSP-J/S竞赛;NOI竞赛。北京中学;东坝。
2004年、普及组、复赛,第10届。
面向6-18岁中小学生,做最专业的中小学编程教育。
解析与答案:
A、试题类型:
生活问题。
B、算法模型:
基本推导。
C、试题说明:
注意数据范围及提示。
将两个数加起来超过8的在前面的星期几输出出来。
i控制的是星期几,从头遍历sum数组 只要找到比8大的就输出i,然后跳出循环输出0的条件是 看七天是不是都没有超过8。只要个数等于7就输出0。
#include <iostream>
using namespace std;
int main()
{
int school[7] = {};
int af_school[7] = {};
int unhappy = 0; // 0:高兴; 1:不高兴;
int most_unhappy = 0;
int index = 0;
for (int i = 0; i < 7; i++)
{
cin >> school[i] >> af_school[i];
}
for (int i = 0; i < 7; i++)
{
if ((school[i] + af_school[i]) > 8)
{
unhappy = 1;
if ((school[i] + af_school[i]) > most_unhappy)
{
most_unhappy = school[i] + af_school[i];
index = i;
}
}
}
if (unhappy == 1)
{
cout << (index + 1) << endl;
}
else if (unhappy == 0)
{
cout << 0 << endl;
}
return 0;
}
A、试题类型:
生活问题。
B、算法模型:
STL算法。
C、试题说明:
相对简单。
#include<cstdio>//c++标准包
#include<cmath>//c++数学包
#include<vector>//命名包
#include<algorithm>//算法包,用sort要导这个包
using std::sort;//c++STL内置函数快速引用声明,即后面无需再用std::sort的形式,只要用sort就能使用,导出命名空间
using std::vector;
struct Peanut
{//结构体,相当于自建了一个列表((x,y,nums),(,,),(,,)...)里面的内容在后面通过用户输入添加
int x;//列数
int y;//行数
int nums;//种子数量
Peanut(int _x,int _y,int _nums):x(_x),y(_y),nums(_nums){}//构造函数
};
vector<Peanut> p;//把Peanut 命名为 p
bool cmp(Peanut a,Peanut b)
{
return a.nums > b.nums;//降序排序,若为a<b,则是升序排序
}//自己编写排序规则函数
int main(int argc, char const *argv[])
{
int a,b,k;//a是列,b是行,k是限定的时间
while(~scanf("%d%d%d", &a, &b, &k))
{//或者while(scanf("%d%d%d",&a,&b,&k) != EOF)
p.clear();//清除上次的数据
int temp;//输入的种子数量,要输入a*b个数
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
{
scanf("%d",&temp);
if(temp>0)
{
p.push_back(Peanut(i,j,temp));//如果种子数量大于0,则计入排序列表,参与后面的//排序
}
}
}
sort(p.begin(),p.end(),cmp);//给生成的数组排序
int cost = 0;
int Amount = 0;
for(int i=0;i<p.size();i++)
{//列表操作部分了
if(i==0)
{
cost += p[i].x+1;
}
else
{
cost += abs(p[i].x-p[i-1].x)+abs(p[i].y-p[i-1].y)+1;
}
if(cost+p[i].x>k)
{//这个部分就是判断是否超出所限时间
break;
}
else
{
Amount += p[i].nums;
}
}
printf("%d\n",Amount);
}
return 0;
}
A、试题类型:
基本数据机构。
B、算法模型:
FBI树。
C、试题说明:
首先将输入的字符串递归转换为二叉树,对于各个部分的左子树、右子树,判定其所包含孩子的'0'或'1'的个数来判断类型。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
string a;
char print(int left,int right)
{
int s1=0,s2=0;
for(int i=left;i<=right;i++)
{
if(a[i]=='0')s1++;
if(a[i]=='1')s2++;
}
if(s1!=0&&s2!=0)return 'F';
if(s1==0&&s2!=0)return 'I';
else return 'B';
}
void calc(int left,int right)
{
if(left!=right)
{
calc(left,(left+right)/2);
calc((left+right)/2+1,right);
}
cout<<print(left,right);
}
int main()
{
cin>>n>>a;
calc(0,a.length()-1);
return 0;
}
A、试题类型:
STL算法选择。
B、算法模型:
库函数应用。
C、试题说明:
题目:给定一个序列,输出这个序列在全排列集合中后面的第m个序列。
就是求m次当前序列的下一个字典序最小的序列。
两种做法:
A、库函数next_permutation 直接秒杀,使用方法见代码。
B、手写next_permutation函数。
思路:
首先:目标是要将一个序列转换成比他字典序大的最小的一个序列,得将某些元素交换位置,这个交换发生在序列的尾部会使得它增大的幅度尽可能地小。
其次:从尾部开始遍历元素,若是元素慢慢增大,显然这些元素都是无法交换的,因为显然在当前几个元素组成的序列中,这种升序(从后往前看)是最大的,那么当找到第一个减小的元素,就可以操作了,因为显然这种情况不是这些元素组成序列的最大情况。
建议:增大的幅度尽可能地小,将当前元素位置记为k,从k+1开始找到第一个刚好大于K号元素的数字,然后交换它们,因为这是第一个刚好大于K号元素的数字,所以它前面的元素大于k号元素,它后面的元素小于k号元素,交换完位置之后,k+1号元素–n号元素依旧是降序的,为了使得增大的幅度尽可能地小,翻转它们就好了。
#include<bits/stdc++.h>
using namespace std;
const int N=10010;
int n,m;
int q[N];
/*
next_permutation传入参数与sort函数一致,将传入序列变为字典序大1的下一个序列
*/
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>q[i];
while(m--)
next_permutation(q,q+n);
for(int i=0;i<n;i++)
cout<<q[i]<<' ';
cout<<endl;
return 0;
}
IT航班提供:课程视频、、课程书籍、竞赛辅导、少儿编程指导、课程采购、加盟、少儿编程资料、少儿编程课程、保送生、特长生、加分、中小学计算机教育、中小学信息学、竞赛、中小学信息学课程、人工智能、中小学编程加盟、少儿编程加盟、品牌加盟、技术加盟、技术指导、课程加盟、师资培训、中小学编程教辅资料、中小学编程教师培训、少儿编程教学书籍、少儿编程视频、教学书籍、教师培训、教学视频、CSP-J/S、中小学信息学课程服务、竞赛指导、课程提供、国内外计算机中小学计算机竞赛、信息学竞赛、信息学课程提供商、信息学奥林匹克。
IT航班支持----中小学编程比赛汇总:
第一部分:国内比赛(IT航班支持)
1、软件能力认证(CSP-JS)
2、全国青少年信息学奥林匹克联赛(NOIP)
3、全国青少年信息学奥林匹克竞赛(NOI)
4、中国青少年………………………
5、………………………创新挑战赛
6、全国青少年………………………
7、………………………
8、 恩欧希教育信息化发明创新奖
9、世界机器人大赛(WRC)
10、………………………大赛
11、少………………………智能教育成果展示大赛
12、“明天小小科学家”奖励活动
13、………………………
14、………………………
15、国际信息学………………………
16、………………………
第二部分:国际比赛(IT航班支持)
17、………………………
18、国际………………………
19、………………………
20、美国信息学………………………
21、加拿大………………………
22、官方邀请赛 (CCO)
23、国际计算思维………………………
24、美国计算机………………………
25、澳大利亚………………………
第三部分:企业比赛(IT航班支持)
26、微软MTA
27、………………………挑战赛
28、………………………科学奖
29、………………………学奖
30、………………………创新挑战赛
31、………………………挑战赛
32、………………………芯计算机表演赛
33、………………………大赛
第四部分:Scratch相关竞赛(IT航班支持)
34、全国中小学生电脑制作大赛
35、………………………
36、………………………
37、………………………
第五部分:其它(IT航班支持)
38、NOI夏令营
39、NOI冬令营(NOIWC)
40、全国青少年………………………
41、国际青少年………………………
联系方式:
A、官方网址:
B、微信公众号:
添加微信,获取资料。
关注公众号,获取动态。