模拟测试107

T1:优化

  枚举中心所在位置,每次贪心找到左右最近的一个相同字符移动。spa

  能够用单调指针扫。指针

  时间复杂度$O(n^2)$。it

T2:
  两个数的乘积为平方数,那么这两个数各自去掉平方因子后相等。
map

  去掉平方因子后能够用map统计答案。im

  对于普通的$O(\sqrt{p})$试除法,复杂度不容许,就算将全部的质数筛出后枚举质数也会超时。统计

  筛出质数是确定要的,考虑优化试除。移动

  咱们只关心平方因子,因此能够用$O(p^{\frac{1}{3}})$的试除。时间

  先用小于$p^{\frac{1}{3}}$的质数筛一遍,那么剩下的数不会含有小于$p^{\frac{1}{3}}$的质因子。字符

  而后就只有两种状况,即一个大质数和一个质数的平方。

  开根再乘判一下就行。

  时间复杂度$O(np^{\frac{1}{3}})$。

T3:

  d维空间中两点之间的路径数:

    设两个点每一维的坐标差为$a_i$,则$ans=\frac{(\sum \limits_{i=1}^d a_i)!}{\prod \limits_{i=1}^d a_i!}$。

  设$dp[i]$表示由起点到$i$的方案数,$S$为能到达$i$的点集。

    $dp[1]=-1$

    $dp[i]=-\sum \limits_{j \in S}dp[j]*calc(j,i)$

  其实就是容斥。

  时间复杂度$O(n^2d)$。

相关文章
相关标签/搜索