第三周训练赛题解
这次题目加强了搜索的练习,还有一些小技巧和基本方法,加了一道基础DP居然没人A确实是意料之外,C题的裸DFS也是很迷。蓝桥杯以爆搜为主,近期会加强搜索训练,做好准备。
A:
给定一个整数n,将1~n排列成环使两两之间互质。
DFS搜索所有可能的排列,输出。
B:
问能否在恰好的时间从S->D
题目运用到了奇偶剪枝的方法,
根据题目,doggie必须在第t秒到达门口。也就是需要走t-1步。设doggie开始的位置为(sx,sy),目标位置为(ex,ey).如果abs(ex-x)+abs(ey-y)为偶数,则abs(ex-x)和abs(ey-y)奇偶性相同,所以需要走偶数步;
当abs(ex-x)+abs(ey-y)为奇数时,则abs(ex-x)和abs(ey-y)奇偶性不同,到达目标位置就需要走奇数步。先判断奇偶性再搜索可以节省很多时间,不然的话容易超时。t-sum为到达目标位置还需要多少步。因为题目要求doggie必须在第t秒到达门的位置,所以(t-step)和abs(ex-x)+abs(ey-y)的奇偶性必然相同。因此temp=(t-step)-abs(ex-x)+abs(ey-y)必然为偶数。
C:
简单的搜索题,为什么都没做出来??
共有n个题目,最少取2个使得难度和在l和r之间且极值差不小于x。
套用DFS可解。
D:
这是一道续命题,你用在这道题上的时间越多,就...[滑稽
E:
进制转换一定要了解原理,进制转换的代码越熟练越好。
F:
F题是一道表达式模拟的题目,需要识别符号和数值后运算
G:
判断奇偶
H:
你有一个炸弹,可以放在任意位置并炸掉该位置所在的行和列上的墙“*”,求一颗炸弹是否能炸掉所有的墙。
我们可以将每行和每列的墙数分别存入数组x[]和y[]。每当a[i][j]的位置是"*"时,x[i]++,y[j]++;最后再将x[i]+y[j]与总墙数sum比较。
注意:当炸弹所在点为“*”时,需x[i]+y[j]-1;
I:
I是一道典型DP题,每个猴子都有自己的时间,而且朋友的朋友也是朋友
状态转移方程:dp[i][j]=min(dp[i][k]+dp[k+1][j]+sum[i][j] i<k<j)