摘要:
题意略。 思路:求出凸包后,ans = 在凸包上的边 * q - 凹陷个数 * p。 一条边上,一个端点在凸包上,另一个端点在凸包内,则一定是凹陷的一条边,我们单向地来扫这些边,记录第一个点在凸包上,而第二个点不在凸包上的边的 个数,这些记录的总和也就是凹陷的总数。由于一个凹陷总是可以被凸包上的一条 阅读全文
摘要:
题意略。 思路: 由于不重合这个性质,我们可以将每一个堆叠的圆圈单独拿出来考虑,而不用去考虑其他并列在同一层的存在, 在贪心解法下,发现,被嵌套了偶数层的圆圈永远是要被减去的,而奇数层的圆圈是要加上的。 详见代码: 阅读全文
摘要:
题意略。 思路: 尺取法,依然是要利用之前的结果。 感觉时间复杂度太高了,竟然也过了。 阅读全文
摘要:
题意略。 思路: 有两个点要注意一下: 1.这个菱形矩阵是8对称的,也即可以是沿45°对角线对称。 2.菱形矩阵上的数字表明了这个点到中心0点的距离,这对于确定位置有帮助。 这个题目简直刷新人生观,这么暴力的做法也能过。。。。 阅读全文
摘要:
题意略。 思路: 这k个点应该放在这棵树的直径上,并且能连成一条路径。如果k比树的直径上的点要多,那么我们就不用把这k个点都用上, 只需要把这棵树直径上所有的点都覆盖上就行了。如果k比树的直径上的点要少,那么我们尽量使这k个点放在这个直径的中心位置。 这个我们可以简单说一下: 首先,把这k个点放在直 阅读全文
摘要:
题意略。 思路: 第一问: 递归地来写,找对称,发现关于(1<<y) - 1和(1<<y)对称的数字做 & 结果为0。 第二问: 6,7特殊考虑。循环左移(1<<y) ~ (1<<(y + 1) - 1),可以保证这个区间内的值与下标做 & 结果不为0。然而如果在这个段内只有1<<y这一个数,那么 阅读全文
摘要:
题意略。 思路:一个拓扑排序的题目吧。肯定是要先处理后面那个任务,再处理前面那个任务,我的思路是尽力先把主处理器能操作的先操作完,然后再把副处理器能操作完的再操作完,这样循环,直到处理完全部。 定义total变量为已经处理完的任务总数。 详见代码: 阅读全文
摘要:
题意略。 思路: 将字符分桶,然后暴力去扫,扫完合并。假设有k个桶,每个桶里有n / k个数,那么我们应该要扫 n / (2 * k)次,每次的复杂度是k,最后算得复杂度是O(n)。 详见代码: 阅读全文
摘要:
题意略。 思路: 开始的时候,定义dp[i]:当前行在第i行,i~n有多少种排列方式,如果i为f,那么dp[i] = dp[i + 1],因为第i + 1条语句只能放在f后且向右缩进一位; 如果i为s,那么dp[i]还与第i行的缩进有关。因此我们增加缩进这个状态。 定义dp[i][j]:当前行在第i 阅读全文
摘要:
题意略。 思路: 可以看成是所有的云彩照常运动,而月亮在跑。只要两个云彩相交后,在分离前月亮能赶到,就算是符合题意的。 可以知道,两个相隔越远的相向运动地云彩是越有可能符合题意的,因为它们相遇所用时间更长,这样月亮越有可能赶到。 假设云彩1为(l1,r1) ,云彩2为(l2,r2) ,r1 < l2 阅读全文