前言
这个博客已经快一年没有更新了……
翻看之前的题解和总结记录,顿感记录的快乐——回顾之前的知识,找回以前的记忆,理清头绪,这正是备战比赛时需要做的事。而拥有博客这个平台,能轻松地应对这个任务。
是时候继续更新了。把这快十天中做过的一些有趣的题目讲讲吧。
【20150801】山峰
题目大意:给出一个矩阵数组 ( 1≤n,m≤500 ) 和一个数 d 。点
这道题咋看上去像搜索,其实不然。因为每个点能走到的格子都是连成一片的(显然),很容易想到可以先把当前点能走到的点全部标记为“可行”,如果与这个点连成一起的区域中最大的数超过了这个点上的数,这个点就不能计入答案。
这样一来,问题变成了“如何将所有【数字超过某个数的格子】标记为可行”以及“询问连续一片可行点的数的最大值”。根据这个想法深入思考,不难发现:如果我们将所有的点按数字从大到小排序,那么在遍历排好序的点时,可行点的数量是不递减的。
这就启发我们使用并查集解决问题:遍历这些点的时候我们把所有“需要标成可行”的点打上标记,也即与周围可行的点并到一起,成为一个个可行点集。由于点是排好序的,每次要标记的点必然是连续的一片,此时可以用个变量 p 标记上一次已经标记了前
【20150802】恭介的法则
题目大意:给定一个正整数 n ( 1≤n≤700000 ),当正整数对 (x,y) 满足 1x+1y=1n!