




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、問題描述SticksDescription George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many sticks he had originally and how long they were originally. 解題要求1. Time Limit, Memory Limit2. In
2、put3.OutputTime Limit:5S Memory Limit:10000KInputThe input file contains blocks of 2 lines. The first line contains the number of sticks parts after cutting. The second line contains the lengths of those parts separated by the space. The last line of the file contains zero.OutputThe output file cont
3、ains the smallest possible length of original sticks, one per line.基本思路從小到大,逐個(gè)嘗試可能的長度。設(shè)已知的n根短棍的長度分別是:l1,l2,ln現(xiàn)在的問題就是:要判斷這n根短棍是否可以組成m根長為length的長棍。這題和Dividing(1014)那題很像,從題意上可以把Dividing看成是此題的簡化版本。然而仔細(xì)分析這兩題有很大不同,因此解法也是大相徑庭的。Dividing那題的數(shù)據(jù)總量可以達(dá)到20000,直接的深度優(yōu)先搜索是很難奏效的,所以我們的想法是如何有效的減少數(shù)據(jù)總量。而對(duì)于此題來說,雖然我不知道實(shí)際測試數(shù)
4、據(jù)的最大的數(shù)據(jù)量(sticks的總數(shù))是多少,但是我只用了一個(gè)長為100的數(shù)組保存也沒有越界。說明總的數(shù)據(jù)量不超過100(注:要解這題要我覺得要使用深度優(yōu)先搜索,對(duì)于深度優(yōu)先搜索來說100已經(jīng)是很大的數(shù)了)。具體思路對(duì)于這個(gè)問題,可以有2種不同的解決方法:1.逐個(gè)使用l1,l2,ln來填充長棍。2.逐個(gè)填充長棍,填完一根長棍,再填下一根。無論是哪一種解題思路,我們都可以“感覺到”如果有如下的關(guān)系成立l1=l2=ln 那么對(duì)于解題是十分有利的。事實(shí)也是如此,在此種情況下將會(huì)比較高效的排除不可能的情況。此題的實(shí)際測試結(jié)果也是如此,如果讀入數(shù)據(jù)后沒有排序,我所見過每種算法都會(huì)超時(shí)。第一種思路的程序框
5、架bool solve(k)/填第k根短棍 for(i=0;im;i+)if(lk+第i根長棍已填的部分 m) ok = 1; printf(%dn, length); return; int i; for (i = 1;i = n;i+) if (!usedi) break; usedi = 1; search(x,sticki,i);/此步和我的第一個(gè)優(yōu)化類似 usedi = 0;void search(int num,int now,int next) if (ok) return; if (now = length) solve(num + 1); return; for (int i = next + 1;i = n;i+) if (!usedi) if(sticki + now = len) usedi = 1;search(num,now + sticki,i);usedi = 0; if (ok) return; /此步和我的第三個(gè)優(yōu)化類似 if (sticki = length - now) return; 以上的程序段來自與lowai,運(yùn)行時(shí)間是20ms。在這段程序中也使用了一些優(yōu)化,經(jīng)過實(shí)驗(yàn),在不加入其中任何一個(gè)優(yōu)化的情況下,計(jì)算結(jié)果都會(huì)超時(shí)。總結(jié)1.深度優(yōu)先搜索的順序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司保安合同樣本
- 共貸協(xié)議合同樣本
- 個(gè)人授課合同樣本
- 企業(yè)代建合同樣本
- 亞馬遜注冊(cè)兼職合同樣本
- 代售合同樣本
- 乳鴿生產(chǎn)銷售合同樣本
- 共享收益合同標(biāo)準(zhǔn)文本
- 個(gè)人借款還款合同樣本
- 關(guān)于分配土地合同樣本
- 債權(quán)法學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 安全生產(chǎn)標(biāo)準(zhǔn)化基本規(guī)范評(píng)分表
- 《Linux網(wǎng)絡(luò)操作系統(tǒng)實(shí)用教程(CentOS8)第2版》全套教學(xué)課件
- 2015年919公務(wù)員聯(lián)考《申論》政法干警河北卷及參考答案
- 幼兒園中班語言散文欣賞《芽》課件
- 汽輪發(fā)電機(jī)組軸系扭振在線監(jiān)測、分析與保護(hù)系統(tǒng)研究
- 期中測試卷(1-4單元)(試題)-2023-2024學(xué)年六年級(jí)下冊(cè)數(shù)學(xué)蘇教版
- 醫(yī)務(wù)人員不良執(zhí)業(yè)行為記分管理制度
- 高中數(shù)學(xué)奧賽輔導(dǎo)教材(共十講)
- 蘇科版八年級(jí)數(shù)學(xué)下冊(cè)??键c(diǎn)微專題提分精練難點(diǎn)特訓(xùn)(四)選填壓軸50道(原卷版+解析)
- 《競爭對(duì)手的分析》課件
評(píng)論
0/150
提交評(píng)論