2808. 使循环数组所有元素相等的最少秒数;1015. 可被 K 整除的最小整数;1001. 网格照明

2808. 使循环数组所有元素相等的最少秒数

核心思想:枚举每个元素作为相等元素最多需要多少秒,然后维护它的最小值。最多需要多少秒是怎么计算的,我们可以把相等值的下标拿出来,然后你会发现两个相邻下标(相邻下标只的是两个值相同,它们的下标距离最近的情况)扩散的时候将它们之间的元素扩散完,需要//2秒,因为每次扩散两个元素,我们只需要统计相邻下标的最远距离//2即可。

2808. 使循环数组所有元素相等的最少秒数;1015. 可被 K 整除的最小整数;1001. 网格照明_第1张图片

1015. 可被 K 整除的最小整数

核心思想:简单想法就是不断枚举1,11,111直到统计次数到达k+1次说明不能满足。这里我们对它进行优化,1,11,111,...我们直接去看它的mod值等不等于0即可,如果mod值重复了说明永远不可能找到答案了,因为你直接用mod值去做*10+1和原来数去做相同操作去%k是等价的。

2808. 使循环数组所有元素相等的最少秒数;1015. 可被 K 整除的最小整数;1001. 网格照明_第2张图片

1001. 网格照明

核心思想:如何将查询一次做到O(1)。如何判断一个点是否被点亮,在于判断它的行,列,正对角线,反对角线。然后发现行列很好表示,对于正对角线,一条对角线上的r-c是一样的,对于反对角线,r+c是一样的,通过这个方法我们可以在O(1)的时间内做到查询。

2808. 使循环数组所有元素相等的最少秒数;1015. 可被 K 整除的最小整数;1001. 网格照明_第3张图片

你可能感兴趣的:(算法,python)