A、试题类型:
送分题。
B、算法模型:
枚举与快排。
C、试题说明:
无。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
bool prime(int n)
{
if(n==0||n==1)
{
return false;
}
if(n==2)
{
return true;
}
for(int i=3;i<sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
int main()
{
char s[1000];
cin>>s;
int a[24]={0},maxn=-999,minn=999;
for(int i=0;i<strlen(s);i++)
{
a[s[i]-'a']++;
}
for(int i=0;i<24;i++)
{
if(a[i]>maxn)
{
maxn=a[i];
}
if(a[i]<minn&&a[i]!=0)
{
minn=a[i];
}
}
int p=maxn-minn;
if(prime(p))
{
cout<<"Lucky Word"<<endl;
cout<<p;
}
else
{
cout<<"No Answer"<<endl;
cout<<0;
}
return 0;
}
A、试题类型:
送分题。
B、算法模型:
枚举与快排,暴力枚举。
C、试题说明:
若符合条件,计数器++。
构建一个求所有数字(非一位数)火柴棒数的函数。代码如下。
int f(int x)
{
int ans=0;
if(x==0) return 6;
while(x)
{
ans=ans+d[x%10];
x/=10;
}
return ans;
}
#include<iostream>
using namespace std;
int d[10]={6,2,5,5,4,5,6,3,7,6}; //记录每个一位数所需的火柴棒数量
int i,j,n;
int a,b,c,cnt=0; //cnt为计数器
int f(int x)
{
int ans=0;
if(x==0)
return 6;
while(x)
{
ans=ans+d[x%10]; //每一位数所需的火柴棒数
x/=10;
}
return ans;
}
int main()
{
cin>>n;
for(i=0;i<=1000;i++)
{
for(j=0;j<=1000;j++) //暴力枚举
{
a=f(i);
b=f(j);
c=f(i+j);
if((n-4-a-b)==c) cnt++; //判断是否满足条件
}
}
cout<<cnt;
return 0;
}
A、试题类型:
路径问题。
B、算法模型:
逻辑推导。
C、试题说明:
无。
#include <bits/stdc++.h>
using namespace std;
const int Max=55;
int n,m;
int f[Max][Max][Max][Max],num[Max][Max];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) scanf("%d",&num[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int a=1;a<=n;a++)
for(int b=1;b<=m;b++)
{
int p1x=i-1,p1y=j,p2x=i,p2y=j-1;
int p3x=a-1,p3y=b,p4x=a,p4y=b-1;
if(p1x!=p3x&&p1y!=p3y)
f[i][j][a][b]=max(f[i][j][a][b],f[p1x][p1y][p3x][p3y]+num[i][j]+num[a][b]);
if(p1x!=p4x&&p1y!=p4y)
f[i][j][a][b]=max(f[i][j][a][b],f[p1x][p1y][p4x][p4y]+num[i][j]+num[a][b]);
if(p2x!=p3x&&p2y!=p3y)
f[i][j][a][b]=max(f[i][j][a][b],f[p2x][p2y][p3x][p3y]+num[i][j]+num[a][b]);
if(p2x!=p4x&&p2y!=p4y)
f[i][j][a][b]=max(f[i][j][a][b],f[p2x][p2y][p4x][p4y]+num[i][j]+num[a][b]);
//if(i==a&&j==b) f[i][j][a][b]-=num[i][j];
}
cout<<f[n][m][n][m];
return 0;
}
A、试题类型:
复杂结构。
B、算法模型:
二分图。
C、试题说明:
设输入数组为a[n]:
(1):结论:设1<= i < j < n 若存在 j < k <= n 使 a[k] < a[i] < a[j] 则a[i],a[j]不可能进入同一个栈。
证明:
若a[i],a[j]进入了同一个栈。
因为a[k] < a[i] < a[j] 所以出栈顺序为a[k] a[i] a[j]。
a[i]入栈,a[j]入栈使需将a[i]出栈,但a[i]应在a[k]后入栈,推出矛盾。
(2)建立图论模型:
将a中元素当做点,利用(1)若i,j不可存在于同一个栈,则i,j间连边。
不难推出,若此图为二分图,则此组数据有解。
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int a[1005],mina[1005];
vector<int> e[1005];
bool book[1005] = {0};
int color[1005] = {0};
bool ans = true;
int s1[1005],top1 = -1,s2[1005],top2 = -1;
void push1(int x)
{
s1[++top1] = x;
cout<<"a ";
}
void pop1(int &now)
{
top1--;
now++;
cout<<"b ";
}
void push2(int x)
{
s2[++top2] = x;
cout<<"c ";
}
void pop2(int &now)
{
top2--;
now++;
cout<<"d ";
}
void make_edge(int x,int y)
{
e[x].push_back(y);
e[y].push_back(x);
}
void dfs(int now)
{
for(int i = 0;i < e[now].size();i++)
{
int nxt = e[now][i];
if(!book[nxt])
{
color[nxt] = -color[now];
book[nxt] =true;
dfs(nxt);
}
else if(color[nxt] + color[now] != 0)
{
ans = false;
return;
}
}
}
int main()
{
// freopen("twostack.in","r",stdin);
// freopen("twostack.out","w",stdout);
scanf("%d",&n);
for(int i = 0;i < n;i++)
scanf("%d",a+i);
mina[n-1] = a[n-1];
for(int i = n - 2;i >= 0;i--)
mina[i] = min(a[i],mina[i+1]);
for(int i = 0;i < n-2;i++)
for(int j = i + 1;j < n-1;j++)
if(a[i] < a[j] && a[i] > mina[j+1])
make_edge(i,j);
for(int i = 0;i < n;i++)
if(!book[i])
{
color[i] = 1;
dfs(i);
if(!ans)
break;
}
if(!ans)
cout<<0;
else
{
int now = 1;
for(int i = 0;i < n;i++)
{
if(color[i] == 1)
push1(a[i]);
while(top1 >= 0 && s1[top1] == now)
pop1(now);
if(color[i] == -1)
{
while(top2 >= 0 && a[i] > s2[top2])
{
while(now == s1[top1])
pop1(now);
if(now == s2[top2])
pop2(now);
}
push2(a[i]);
}
}
while(now <= n)
{
if(s1[top1] == now)
pop1(now);
else
pop2(now);
}
}
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、微信公众号:
添加微信,获取资料。
关注公众号,获取动态。