首页 > 代码库 > 第三周训练赛题解

第三周训练赛题解

 

这次题目加强了搜索的练习,还有一些小技巧和基本方法,加了一道基础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)

 

 

第三周训练赛题解