关键词:
北京中关村;海淀黄庄;北京大学;清华大学。少儿编程;中小学编程;信息学竞赛;计算机竞赛;NOIP竞赛;CSP-J/S竞赛;NOI竞赛。2000年、提高组、复赛,第6届。
A、试题类型:
进制问题。
B、算法模型:
学科混合,属于计算机原理与变成基本组合。
C、试题说明:
进制转换题。进制转换就是不断除以进制数存下余数最后逆向输出。
这道题无法保证余数是正数,需要特判,如果<0就把除法答案+1,余数再减一个进制数(因为进制数是负数,所以相当于加上了一个正数)。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<algorithm>
#include<cctype>
#include<iomanip>
#include<queue>
#include<set>
using namespace std;
int getint()
{
int sum=0,f=1;
char ch;
for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar());
if(ch=='-')
{
f=-1;
ch=getchar();
}
for(;isdigit(ch);ch=getchar())
sum=(sum<<3)+(sum<<1)+ch-48;
return sum*f;
}
int n,nn,r,rr,cnt;
int a[100];
int main()
{
freopen("change.in","r",stdin);
freopen("change.out","w",stdout);
n=getint(),r=getint();
nn=n,rr=r;
while(n)
{
a[++cnt]=n%r;
if(a[cnt]<0)//特判
{
a[cnt]-=r;
n=n/r+1;
}
else
n=n/r;
}
printf("%d=",nn);
for(int i=cnt;i>=1;--i)
{
if(a[i]>=10)
printf("%c",'A'+a[i]-10);
else
cout<<a[i];
}
printf("(base%d)",rr);
return 0;
}
A、试题类型:
基本推理。
B、算法模型:
方程问题。
C、试题说明:
状态转移方程:dp[i][j][kk] = max{dp[i][m][left]*dp[m+1][j][kk-left-1]}
dp[i][j][kk]表示从i到j(包含)使用kk个乘号分割时所得的最大值。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int n,k;
char a[50];
//string a;
//vector<vector<long long>> num(n, vector<long long>(n+1, 0));
long long num[50][50];
long long dp[50][50][10];
int main()
{
cin >> n >> k;
cin >> a;
for(int i=0; i<n; i++)
{
num[i][i] = a[i]-'0';
dp[i][i][0] = num[i][i];
for(int j=i+1; j<n; j++)
{
num[i][j] = num[i][j-1]*10+(a[j]-'0');
dp[i][j][0] = num[i][j];
}
}
for(int i=0; i<n; i++)
{
for(int j=i+1; j<n; j++)
{
for(int kk=1; kk<=k; kk++)
{
long long maxV = 0;
for(int m=i; m<=j; m++)
{
for(int left=0; left<=kk; left++)
{
if(dp[i][m][left]*dp[m+1][j][kk-left-1]>maxV)
maxV=dp[i][m][left]*dp[m+1][j][kk-left-1];
}
}
dp[i][j][kk] = maxV;
}
}
}
cout << dp[0][n-1][k];
return 0;
}
A、试题类型:
基本算法。
B、算法模型:
DFS。
C、试题说明:
无。
#include<bits/stdc++.h>
using namespace std;
const int MAXN=50;
string str[MAXN];
int n,used[MAXN];
int ans=0;
int check(string a,string b)//查找想同的部分长度
{
int la=a.size(),lb=b.size();
int l=min(la,lb);
for(int i=1;i<l;i++)
{
int flag = 1;
for (int j = 0; j < i; j++)
{
if(a[la-i+j]!=b[j])
flag=0;
}
if(flag)
return i;
}
return 0;
}
void dfs(string s,int len)
{
ans=max(ans,len);
for(int i=0;i<n;i++)
{
if(used[i]>=2) continue;
int c=check(s,str[i]);
if(c>0)
{
used[i]++;
dfs(str[i],len+str[i].size()-c);
used[i]--;
}
}
}
int main()
{
cin>>n;
getchar();
for(int i=0;i<n;i++)
{
cin>>str[i];
getchar();
used[i]=0;
}
string s;
cin>>s;
dfs(' '+s,1);
cout<<ans<<endl;
return 0;
}
A、试题类型:
空间想象。
B、算法模型:
四维数组应用。
C、试题说明:
四维数组f[ i ][ j ][ k ][ l ],当第一次走到(i,j )时并第二次走到(k,l )时取到的数之和。
然后再考虑当第二次走到和第一次相同位置的数已经被取走了,就只加一次。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n;
int a[12][12],f[12][12][12][12];
int main()
{
scanf("%d",&n);
while(1)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if(x == 0 && y == 0 && z == 0)
break;
a[x][y] = z;
}
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
for(int k = 1;k <= n;k++)
{
int l = i + j - k;
if(l <= 0)
break;
f[i][j][k][l] = max(f[i - 1][j][k - 1][l],max(f[i - 1][j][k][l - 1],max(f[i][j - 1][k - 1][l],f[i][j - 1][k][l - 1])));
if(i == k && j == l)
f[i][j][k][l] += a[i][j];//在去的时候已经把数取走了,所以回来的路上就取不了了
else
f[i][j][k][l] += a[i][j] + a[k][l];
}
}
}
printf("%d",f[n][n][n][n]);
return 0;
}
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、微信公众号:
添加微信,获取资料。
关注公众号,获取动态。