模擬測試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)$。

相關文章
相關標籤/搜索