A、试题类型:
送分题。
B、算法模型:
STL应用。
C、试题说明:
相对比较简单。
#include<iostream>
#include<cstring>
using namespace std;
string a,b;
int k[1000][3];
int bb[26];
int main()
{
cin>>a>>b;
memset(k,0,sizeof(k));
for(int i=0;i<a.size();i++)
{
if( k[ a[i]-'A' ][1] == 0 )
{
k[ a[i]-'A' ][1] = 1;
k[ a[i]-'A' ][2] = b[i] -'A' ;
bb[b[i] -'A'] ++;
}
else
{
if(k[ a[i]-'A' ][2] != (b[i] -'A' ))
{
cout<<"Failed";
return 0;
}
}
}
for(int i=0;i<26;i++)
{
if(k[i][1] == 0 || bb[i] == 0)
{
cout<<"Failed";
return 0;
}
}
string s;
cin>>s;
for(int i=0;i<s.size();i++)
{
s[i] = k[ s[i] -'A' ][2] + 'A' ;
}
for(int i=0;i<s.size();i++)
{
cout<<s[i];
}
return 0;
}
A、试题类型:
推导问题。
B、算法模型:
公式证明。
C、试题说明:
公式证明与化简。
#include<cstdio>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int a0,a1,b0,b1;
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
int p=a0/a1,q=b1/b0,ans=0;
for(int x=1;x*x<=b1;x++)
if(b1%x==0)
{
if(x%a1==0&&gcd(x/a1,p)==1&&gcd(q,b1/x)==1) ans++;
int y=b1/x;//得到另一个因子
if(x==y) continue;
if(y%a1==0&&gcd(y/a1,p)==1&&gcd(q,b1/y)==1) ans++;
}
printf("%d\n",ans);
}
return 0;
}
A、试题类型:
算法问题。
B、算法模型:
DFS、状态转移方程。
C、试题说明:
在图上用dfs进行dp转移,对于每个节点记录从1到该节点所有路径的最大差值,然后最后输出n即可。
最小权值,状态转移方程。
#include <bits/stdc++.h>
using namespace std;
namespace StandardIO
{
template<typename T>inline void read (T &x)
{
x=0;T f=1;char c=getchar();
for (; c<'0'||c>'9'; c=getchar())
if (c=='-')
f=-1;
for (; c>='0'&&c<='9'; c=getchar())
x=x*10+c-'0';
x*=f;
}
template<typename T>inline void write (T x)
{
if (x<0)
putchar('-'),x*=-1;
if (x>=10)
write(x/10);
putchar(x%10+'0');
}
}
using namespace StandardIO;
namespace Project
{
const int N=500500;
const int INF=2147483647;
int n,m;
int a[N];
int cnt;
int head[N];
struct node
{
int to,next;
} edge[N<<1];
int f[N],mina[N];
inline void add (int a,int b)
{
edge[++cnt].to=b,edge[cnt].next=head[a],head[a]=cnt;
}
void dfs (int now,int fa,int minn)
{
int flag=1;
minn=min(minn,a[now]);
if (mina[now]>minn)
mina[now]=minn,flag=0;
if (f[now]<max(f[fa],a[now]-minn))
f[now]=max(f[fa],a[now]-minn),flag=0;
if (flag)
return;
for (register int i=head[now]; i; i=edge[i].next)
{
int to=edge[i].to;
dfs(to,now,minn);
}
}
inline void MAIN ()
{
read(n),read(m);
for (register int i=1; i<=n; ++i)
read(a[i]),mina[i]=INF;
for (register int i=1; i<=m; ++i)
{
int x,y,z;
read(x),read(y),read(z);
add(x,y);
if (z==2) add(y,x);
}
dfs(1,0,INF);
write(f[n]);
}
}
int main () {
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
Project::MAIN();
}
A、试题类型:
计数组合。
B、算法模型:
搜索 + 二进制优化。
C、试题说明:
简单问题。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define lowbit(x) (x&(-x))
const int Loc[9][9] = {
{0,0,0,1,1,1,2,2,2},
{0,0,0,1,1,1,2,2,2},
{0,0,0,1,1,1,2,2,2},
{3,3,3,4,4,4,5,5,5},
{3,3,3,4,4,4,5,5,5},
{3,3,3,4,4,4,5,5,5},
{6,6,6,7,7,7,8,8,8},
{6,6,6,7,7,7,8,8,8},
{6,6,6,7,7,7,8,8,8}};
const int Val[9][9] = {
{6,6,6,6,6,6,6,6,6},
{6,7,7,7,7,7,7,7,6},
{6,7,8,8,8,8,8,7,6},
{6,7,8,9,9,9,8,7,6},
{6,7,8,9,10,9,8,7,6},
{6,7,8,9,9,9,8,7,6},
{6,7,8,8,8,8,8,7,6},
{6,7,7,7,7,7,7,7,6},
{6,6,6,6,6,6,6,6,6}};
int ans = -1;
int yes[10];
int H[10],L[10],X[10];
int rep[1<<9],cnt[1<<9];
int Init()
{
for(int i = 0; i < 9; ++i)
{
rep[1<<i] = i;
H[i] = L[i] = X[i] = (1<<9)-1;
}
for(int i = 1; i < (1<<9); ++i)
cnt[i] = cnt[i-lowbit(i)] + 1;
int val, ret = 0, t;
for(int i = 0; i < 9; ++i)
for(int j = 0; j < 9; ++j)
{
scanf("%d",&val);
if(val)
{
t = 1 << val-1;
H[i] ^= t;
L[j] ^= t;
X[Loc[i][j]] ^= t;
ret += val * Val[i][j];
}
else
yes[i] |= (1<<j);
}
return ret;
}
void Dfs(int sum)
{
int t,j,tot,val,x,y,mn = 10;
for(int i = 0; i < 9; ++i)
{
t = yes[i];
while(t)
{
j = lowbit(t), t ^= j, j = rep[j];
tot = cnt[H[i]&L[j]&X[Loc[i][j]]];
if(tot < mn)
{
mn = tot;
x = i, y = j;
}
}
}
if(mn == 10)
{
if(sum > ans) ans = sum;
return;
}
yes[x] ^= 1<<y;
t = H[x]&L[y]&X[Loc[x][y]];
while(t)
{
val = lowbit(t), t ^= val;
H[x] ^= val, L[y] ^= val, X[Loc[x][y]] ^= val;
Dfs(sum + Val[x][y]*(rep[val]+1));
H[x] ^= val, L[y] ^= val, X[Loc[x][y]] ^= val;
}
yes[x] ^= 1<<y;
}
int main()
{
Dfs(Init());
printf("%d\n",ans);
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、微信公众号:
添加微信,获取资料。
关注公众号,获取动态。