思路一:
考慮lucas定理,mod 4意義下,每乙個組合數都不能是0
所以,把n變成**制數,然後數字dp即可
f[i][0/1][0/1/2/3]表示,前i位,有沒有限制,mod 4 的值是0/1/2/3
發現,4=2^2,所以如果出現乙個0或者兩個2都可以
所以,簡化一下:f[i][0/1][0/1/2]表示,前i位,有沒有限制,2的次冪出現了0,1,2次,(來乙個0直接相當於出現2個2)
最後答案是:f[len][0/1][2]
len大概不到5000
但是dp要高精(可以壓18位)
原來的n也可以壓位(壓18位也可以的)
複雜度:o(3000/18*len+5000*2*3*3000/18)這個是極限
有一定的常數
卡一卡應該能過。
大錯特錯,4不是質數,不能用lucas定理
思路二:
上面那個太暴力~~~
這個複雜度很低了:
瓶頸是2^(s(m))
壓位高精的話,再用上高精快速冪,s(m)極限是10000大概(也就是len)
總複雜度:o(300*300*log(10000))這個還是最壞情況。
2012天津網路賽的1004
本來以為有什麼好方法的,初看感覺是網路流可是不知道怎麼建圖,然後sphinx和我說可能是狀態壓縮,但是我狀態壓縮的複雜度有點高,是2的30次方,絕對超時,然後覺得這題實在想不出來去網上搜了一下發現真的有人用狀態壓縮過了,覺得有點不可思議,我敲了一下沒想到也過了。c 的輸入輸出無任何優化156ms1y...
HDU4279 2023年天津網路賽
題意 給出乙個f x 表示不大於x的正整數裡,不整除x且跟x有大於1的公約數的數的個數。定義f x 為不大於x的正整數裡,滿足f x 的值為奇數的數的個數。題目就是求這個f x 網上很多方法就是打表找規律,已經談不上是演算法了。這裡我們可以來分析 不整除x且跟x有大於1的公約數的數的個數 f x x...
敏捷之旅2012天津站活動組織心得
今年2012,是天津軟體本地社群的第二次舉辦敏捷之旅活動。去年的破冰之旅還歷歷在目,經過一年的時間,天津有更多的朋友開始接觸敏捷,實踐敏捷,討論敏捷,並加入軟體社群積極參加和回饋,也使得天津軟體行業更加繁榮和具有競爭力。今年共有四位組織者 eugene xerox king費事 申導 柴阿峰 大家 ...