ETH官方钱包

創(chuàng)作內(nèi)容

1 GP

[leetcode]1994. The Number of Good Subsets

作者:???\~O_O~/???│2021-09-05 04:24:27│巴幣:2│人氣:467
題目: 1994. The Number of Good Subsets
難度: Hard
目前下列解法的時(shí)間複雜度: O(n) (因?yàn)閿?shù)值範(fàn)圍極小,實(shí)際上在寫可能直接開滿)
註: 這題睡飽再解, AC 率 18.8% 真的不是假的


題目說(shuō)明

給一堆數(shù)值在 1 到 30 之間(都包含)的整數(shù),
問(wèn)有幾種這些整數(shù)的子集合,使得子集合中的所有數(shù)乘起來(lái)後的值,可以用 1 或多個(gè)"不同的"質(zhì)數(shù)相乘來(lái)表達(dá)。
例如: [1,2,2,3,4]
6 = 2 * 3 ,質(zhì)數(shù)不重複,ok。
4 = 2 * 2 ,質(zhì)數(shù) 2 重複出現(xiàn),不ok。
1 = 1 ,不含任何質(zhì)數(shù),不ok。
故要算進(jìn)來(lái)的子集合只有:
[2] , [3] , [1,2] , [1,3] , [2,3] , [1,2,3] 共 6 種。


解法: dp -> 數(shù)學(xué)

0. 建 1 到 30 的質(zhì)數(shù)表。
1. 一開始先想一個(gè)會(huì)TLE的解法。
a. 先假設(shè)有一張表,此表 value 是選出來(lái)ok的整數(shù)子集合的數(shù)量;key 為這些整數(shù)相乘後"有哪些質(zhì)數(shù)"。
b. 每次看到一個(gè)數(shù)字後從表中去找哪些情況(S)加上這個(gè)數(shù)字(x)後ok,將S的答案加到(S+{x})上。接著 {x} 那格 +1 ,代表只選 x 一個(gè)數(shù)字。
c. 然後看一下發(fā)現(xiàn)1億 ( 10萬(wàn) * pow(2,|1到30的質(zhì)數(shù)數(shù)量=10|) ) 了,再加一些瑣事,TLE。
2. 接著想到相同的數(shù)字根本只會(huì)挑 1 個(gè)是 C n 取 1 ,所以先數(shù)一下 1 到 30 每個(gè)數(shù)字出現(xiàn)過(guò)幾次(n),改成直接走過(guò) 1 到 30 (都包含),每次更新的時(shí)候直接乘上 C n 取 1 次。
3. 把每種情況S的答案都加起來(lái)。
4. 然後發(fā)現(xiàn)還是 WA 了,因?yàn)?1 可以取任意多個(gè)都不影響結(jié)果,所以把答案中 1 的部份去掉,改成 2 到 30,然後答案再乘 pow(2,|1出現(xiàn)的次數(shù)|)
5. 顧好上述行為怎麼取餘,好了你可以回傳答案了。


source code

嗯,對(duì),比賽的時(shí)候我沒(méi)解出來(lái),然後我就去躺了,睡不著的情況下想到答案。
從執(zhí)行時(shí)間的統(tǒng)計(jì)表中可以看出兩極分布,所以比較慢的到底寫了什麼解法?

引用網(wǎng)址:http://www.jamesdambrosio.com/TrackBack.php?sn=5257913
All rights reserved. 版權(quán)所有,保留一切權(quán)利

相關(guān)創(chuàng)作

同標(biāo)籤作品搜尋:leetcode|hard|C++|程式教學(xué)

留言共 0 篇留言

我要留言提醒:您尚未登入,請(qǐng)先登入再留言

1喜歡★agold404 可決定是否刪除您的留言,請(qǐng)勿發(fā)表違反站規(guī)文字。

前一篇:[leetcode]18... 後一篇:我以為網(wǎng)頁(yè)js的swit...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網(wǎng)路標(biāo)準(zhǔn),可能無(wú)法使用新的應(yīng)用程式來(lái)呈現(xiàn)網(wǎng)站內(nèi)容,在瀏覽器支援度及網(wǎng)站安全性的雙重考量下,為了讓巴友們有更好的使用體驗(yàn),巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁(yè)面呈現(xiàn)和功能。
屆時(shí)建議您使用下述瀏覽器來(lái)瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業(yè)系統(tǒng)版本才可使用)

face我們了解您不想看到廣告的心情? 若您願(yuàn)意支持巴哈姆特永續(xù)經(jīng)營(yíng),請(qǐng)將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學(xué)】