GDOI Day2解题报告
赛后大体总结:
Day2 的预估分可能要比 Day1 高一些吧,毕竟 Day1 考的真的很烂(T3 为啥 CE 我都不知道,文件读写我加了啊)
结果 Day2 比 Day1 考的还烂!
为啥 T1 暴了我也不知道。。。
还是觉得自己的思维深度不够,也可能是算法的不熟悉和不熟练导致的吧
下次比赛再加油吧
解题报告:
T1 点指兵兵
题意
问有多少个
数据范围
对于所有测试点,
思路:
法一:
枚举
时间复杂度
法二:
观察发现,最终的物品编号为
因此枚举
特殊限制:
如果用模式来表达这题,就会变成:
求有多少个
所以
由于
法三:
要求
而我们对这三个数进行因数分解时,是不会有某个数
因为
所以只需要对
T2 网页浏览
题意
给定网页形成的树,从父节点到子节点可以替换打开或新标签页打开,退出的时候可以返回标签页或关闭标签页。根节点只能点击打开。问最少要多少次操作能浏览完整棵树上的节点
数据范围
对于所有测试点,
思路
法一:
暴力枚举浏览顺序以及每个网页的打开和关闭的操作
枚举量不超过
测试点
测试点
法三:(子节点不超过 5 个)
可以通过枚举子节点 + 树形 DP 的思想获得这一部分分
法四:
每个网页都一定要有“打开”和“关闭”两个步骤,而关闭网页或许可以同时执行多个网页的退出步骤
先考虑一下返回上一个标签页的意义,设现在要从
所以根据贪心的思想,在每一个非最后一个的叶子结点使用“替换打开”就可以使操作数量减少
所以最后的操作次数应该是:
T3 教室的电子钟
题意
电子钟共有年月日时分秒共
数据范围:
对于所有测试点:
保证起始时间不晚于结束时间。
思路:
对于部分分:
-
一秒一秒跳,只处理秒 (
10\ pts ) -
加上分的处理(
20\ pts ) -
加上时的处理(
30\ pts ) -
加上日的处理(
40\ pts ) -
加上月和年的处理 (
50\ pts )
法一:
一秒一秒跳到第一个完整日的开始,一日一日跳到最后一个完整日的结束,最后一秒一秒跳到结束时间
法二:
起始时间和终止时间都往某一个方向跳到一个完整年的开始,然后一年一年地跳到终止时间
法三:
可以使用前缀和思想:
设
法四:
对平年和闰年的每一秒算出前缀和,然后输入的两个时间直接转化成秒相减,
T4 机器人
题意
给定一个由障碍物,空地和机器人(有且仅有一个)组成的地图和命令序列,机器人可以选择命令序列中的任意一个子序列执行,问机器人能否走出地图
数据范围
令
对于所有测试点,
思路
法一:
枚举每一个子序列,判断机器人会不会走出地图
时间复杂度
法二:
法三:
设
转移只考虑下一条指令
时间复杂度
法四:
上一档部分分的
其实我们希望用到的指令越少越好,可以给后面的步骤制造出更大的出界机会
所以这样就变成了一个最短路问题:从指定起点出发,求到达每个位置所需要的最少指令数
预处理对于指令序列的每一个位置,它的下一个位置(上下左右)在哪
用
时间复杂度
最后的正解还没推出来
如果有知道的同学可以评论提出来,我会及时更正