MZ test17# NOIP模拟题 # T1 第1题 时间计算(heaven.pas/cpp)[key.模拟]
MZ test17# NOIP模拟题 #T3 第3 题 登山机器人(robot.pas/cpp)
MZ test17# NOIP模拟题 # T4 第4题 路线统计(route.cpp/pas)
难度一般话。 建议先A t1和t3.
不过此套题题面有毒。所以千万千万要认真读题。
想学好信奥先学会读题!!!
solution:
1、到天宫做客(简单)
模拟。
2、最优时间表(动态规划)
设mt(i)表示从第i个时间单位开始到第n个时间单位结束的最短维修时间,则mt(i)具有最优子结构性质,且满足如下递归式:
当时间单位i有多个维修程序时,mt(i)=min{mt(i+tj)};
sj=i
当时间单位i没有维修程序时,mt(i)=mt(i+1)-1 。
初始值为mt(n+1)=n 。
3、登山机器人(贪心)
1、贪心思路: 可以这样思考,假设每个机器人每次只能走一米。
假设第i个机器人走第j米需要时间 b[i][j], ke,可用w[i]作为标记矩阵, 记录第i个机器人已经走到第几米。
采用贪心算法,每一米都使用时间最少的机器人,然后更新机器人的步数信息。(仅当此题目表明机器人越走越慢时,此贪心策略有效)
2、动规思路:用f[i][j]表示前i个机器人攀登到j这个高度所用的最少时间
f[i][j]=min{f[i][j],f[i-1][j-h]+robot[i][h]} (h=1~k)即每个机器人能走的高度
4、路线统计
矩阵乘法的标志:点很少(矩阵的n次幂耗时少),时间很多(走法复杂)
将每个点之间的关系用矩阵存储,i能1步到j标记为1,不能到标记为0,注意题中边权为1-5,则可拆点,将每个点拆成边权个点,如图:
则这个矩中的map[i][j]就保存了1步能从i到j的方案数,要求t步,则直接将矩阵自乘t次即得答案。