2017暑假集训第二天
来源:互联网 发布:java 蓝牙通信协议 编辑:程序博客网 时间:2024/06/05 03:43
今天的集训着实有些郁闷,上午完成了一道简单的搜索水题(Dungeon Master-一个三维的搜索,细节比较多,但着实简单)之后便被卡死在了一个细节更多的题(Children of the Candy Corn)上面,这个题的难点在于控制方向,但之前我对代码中方向的理解不深刻,导致处处受挫,但最终在自己的思维和修改下完成了方向的控制,但细节过多,下午又有比赛,于是放弃了这道题的求解,控制方向的方法的关键代码如下:
struct point{
int x;
int y;
int step;//记录上一个状态下的方向
int fun;
};
if (topp.x==ex&&topp.y==ey){
judge=1;
return topp.step;
}
if (topp.fun==1&&map[topp.x+xx[2]][topp.y+yy[2]]!='#'&&ok(topp.x+xx[2],topp.y+yy[2])){
point newp;
newp.x=topp.x+xx[2];
newp.y=topp.y+yy[2];
newp.step=topp.step+1;
newp.fun=3;
qq.push(newp);
}
else if (topp.fun==2&&map[topp.x+xx[3]][topp.y+yy[3]]!='#'&&ok(topp.x+xx[3],topp.y+yy[3])){
point newp;
newp.x=topp.x+xx[3];
newp.y=topp.y+yy[3];
newp.step=topp.step+1;
newp.fun=4;
qq.push(newp);
}
else if (topp.fun==3&&map[topp.x+xx[1]][topp.y+yy[1]]!='#'&&ok(topp.x+xx[1],topp.y+yy[1])){
point newp;
newp.x=topp.x+xx[1];
newp.y=topp.y+yy[1];
newp.step=topp.step+1;
newp.fun=2;
qq.push(newp);
}
else if (topp.fun==4&&map[topp.x+xx[0]][topp.y+yy[0]]!='#'&&ok(topp.x+xx[0],topp.y+yy[0])){
point newp;
newp.x=topp.x+xx[0];
newp.y=topp.y+yy[0];
newp.step=topp.step+1;
newp.fun=1;
qq.push(newp);
//if (newp.step<=5)cout<<newp.x<<' '<<newp.y<<' '<<newp.fun<<' '<<newp.step<<endl;
}
方法就是简单的记录和处理转向,但是细节较多。
下午的练习赛中在规定时间只做出了第二个题,(第一题赛后一分钟发现原来是“ccw"写成了”cww"以至于数次未完成。
大部分的时间浪费在了第三题的思维上,看题解后认为大致类似,都是找3次方,但我是分开a和b找,方法就是筛素数,找到a和b的素因子,并统计个数,以3次方为基准多的减二少的减一,最终如果正好为0(也就是3次方)那么符合条件,如果出现负数,则impossible,但估计是除法未处理妥当,导致runtime error,未完成该题,方法欠妥,也是思维脑洞开的不大。
晚上的训练做了一个较难的搜索题,难点在记录路径上,这里,用的方法就不再是传统的dfs的模板中的queue方式,而是直接开数组,并用结构体中pre记录上一个元素在数组中的位置,最后用下标回溯,得到记录的路径,最后反向输出既得结果。回溯代码如下:
void print(){
total=0;
while (t!=0){
total+=1;
pot[total]=p[t].fun;
t=p[t].pre;
}
cout<<total<<endl;
for (int i=total;i>=1;i--){
cout<<aa[pot[i]]<<endl;
}
}
完成今天的训练之后认为自己效率略低,脑洞太小, 还需要多看博客,加大自己对题目的理解,以提高自己的爆发力等其他实力,而不是闷头刷题,这样了解题目的速度过慢,而且略有被动。
- 2017暑假集训第二天
- 暑假集训第二场
- 2017暑假集训第六天
- 2017.8.25暑假集训第二十六天(暑假集训总结)
- 暑假集训第二周总结
- 2017.8.1暑假集训第二天(下午训练赛)
- 2017暑假集训总结
- 2017暑假集训小结
- 2017暑假集训
- 2017暑假集训总结
- 2017暑假集训感悟
- 2017暑假集训总结
- 暑假集训-合训第二场
- 2017.8.20暑假集训第二十一天
- 2017.8.23暑假集训第二十四天
- 暑假集训 第六天了
- 2017CSU暑假集训 Languages
- 2017暑假集训第一天
- 七月小结
- 洛谷1983(DAG上最长路)
- 中国剩余定理介绍
- 自动驾驶的技术架构和生态发展
- 4349: 最小树形图
- 2017暑假集训第二天
- G
- 1023. Have Fun with Numbers (20)
- 运维——Linux防火墙iptables语法详解
- linux编程——I/O操作之文件基本读写
- FreeCodeCamp初级算法
- OpenStack学习笔记-1
- linux文件权限查看及修改-chmod
- mysql分页优化