021 白书(第1页)
几个月学的知识点在脑海中翻涌,郭晓川努力寻找其中千丝万缕的联繫,试图与剩下的题目建立某种微妙的匹配。
再看排名,前面9个人里,有人多过了一道题,这题很像是动態规划,但之前稀里糊涂练过的两题,根本提取不出任何能带来头绪的经验。
还剩一小时,剩下的三题中只能押注一题,没半点容错空间了。
所有题都已读完,只有一道无人碰过的题隱约有些思路——搜索!
不管了,写!
提交,tle(运行超时)。
优化!
虽然结果是tle,运行时间顶格显示为题目的2秒运行时限,但郭晓川在本地模擬了一组最大的数据,似乎並没有比2秒慢很多。
继续优化!他下定决心。
集训时尹学长推荐过poj1011,是一道穷举所有可能將小棍子拼成相同长度棍子的题,他说那道题虽然理论复杂度不算是个“正確的题”,却能练优化思路,也就是“剪枝”——用各种办法排除搜索时没必要的分支。
用为数不多的搜索优化经验,让这份代码快一些,再快一些。
剪!——tle。
再剪!——还是tle。
接著剪!——依旧tle。
比赛时间还剩20分钟,郭晓川的排名掉到了第12。
还有什么遗漏的?他开始从头梳理题目条件。
poj1011断断续续憋了3天,没搜题解,硬是自己卡出了ac。
眼下这个题一定也可以的!一定!
排序、调换顺序、预处理、翻转逻辑……该试的都试了,还差什么?还差什么?
好像就差一点点!也许是几百毫秒,也许是几十毫秒!
还剩10分钟。
再一次翻遍了代码中每条逻辑。
还剩5分钟。
进不了校队了吗?努力都白费了吗?
念头冒出来,郭晓川猛地摇头。不行!再想!
视线飞速扫著代码。
printf?
while?
dfs?
break?
scanf?
scanf!!!
编译器的书里对scanf缓存区的討论突然衝进脑海。