Make Them Equal 埃氏筛法(1200)
生活随笔
收集整理的這篇文章主要介紹了
Make Them Equal 埃氏筛法(1200)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意 :
- 給一長度為n的字符串,進行以下操作,將所有字符都變成字符c :取一個整數1<=i<=n1<=i<=n1<=i<=n,令所有不被i整除的j有s[j] == c,求最小操作次數
思路 :
- 如果s全為c,輸出0
- 如果最后一位為c,輸出1 n
- 如果最后一位不為c,從2開始枚舉,考慮是否有一個數能將所有字符改為c,優化枚舉方案,用類似于埃氏篩的思想,考慮當前這個數的所有倍數在字符串中所對應的字符是否不是c,如果有的話這個數就不合理,這樣的復雜度是O(nlogn)O(nlogn)O(nlogn),可以過
- 如果有這樣的數 輸出 1 x
- 如果沒有 輸出 2 ,取一個非n因數的任意數(比如n?1n-1n?1,就不需要枚舉了)和n
- 優化 :考慮證明結論 n的后一半數中,存在某個值不在下標序列中,則這個值可以作為答案。充分性顯然成立,必要性考慮n的前一半數如果作為答案,則一定有一個它的倍數屬于n的后一半數,且不在下標序列中
- 上述所有情況都不滿足時,輸出n和n-1即可消除所有數
總結
以上是生活随笔為你收集整理的Make Them Equal 埃氏筛法(1200)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Special Numbers 进制(1
- 下一篇: E1. Rubik‘s Cube Col