博主:@DY 我做完了所有题目,说好奖励HQY女朋友的吻呢【手动滑稽】
HQY:曹贼纳命来!!!!(强行屏蔽)
HXY:@XueYunAW 所以说爱会消失,是吗? (掏出了钛合金键盘)
博主:@HXY 开个玩笑,别当真啊! (惨叫&&痛苦面具)
读者: TMD正文怎么还没开始!!!!
. . . . . .
比赛题目列表: 传送阵
NO 1:HQY与手机
(1)查看题目
(2)分析题目
1.知识点
不难看出本题考察的是对字符&字符串的操作 (废话)
2.方法
本人使用字符数组存储法
当然方法并不唯一 (废话)
(3)解决问题
1.存储字母
for(int i=0;i<t.size();++i)
a[t[i]]=r[i];
2.打出对应字母
for(int i=0;i<s.size();++i)
cout<<a[s[i]];
完整代码
#include<bits/stdc++.h>
using namespace std;
char a[1001];//数据范围很小,数组定义的有亿点点浪费
string s,t,r;
int main(){
cin>>s>>t>>r;
for(int i=0;i<t.size();++i)
a[t[i]]=r[i];//强制类型转换,以ASCII码为下标
for(int i=0;i<s.size();++i)
cout<<a[s[i]];
return 0;
}
NO 2:HQY和迷宫
(1)查看题目
(2)分析题目
1.知识点
Manhattan距离
2.方法
有很多同学看到迷宫类题目就想到搜索,但搜索并不算是一种高效算法,而且本题数据在0~ 1 0 8 10^8 108之间,搜索很不现实。所以要用数论,Manhattan距离,记住公式:Manhattan距离=| x 1 − x 2 x_1-x_2 x1−x2|+| y 1 − y 2 y_1-y_2 y1−y2|.
(3)解决问题
1.绝对值
使用abs()函数,即绝对值,abs(x) = return x>=0?x:-x.
2.Manhattan距离公式
将公式转化为代码:
abs(x[1]-x[2])+abs(y[1]-y[2]);
完整代码
#include<bits/stdc++.h>
using namespace std;
int m,n,x[2],y[2];
int main(){
scanf("%d%d%d%d%d%d",&m,&n,&x[1],&y[1],&x[2],&y[2]);