版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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.基本思路從小到大,逐個嘗試可能的長度。設(shè)已知的n根短棍的長度分別是:l1,l2,ln現(xiàn)在的問題就是:要判斷這n根短棍是否可以組成m根長為length的長棍。這題和Dividing(1014)那題很像,從題意上可以把Dividing看成是此題的簡化版本。然而仔細分析這兩題有很大不同,因此解法也是大相徑庭的。Dividing那題的數(shù)據(jù)總量可以達到20000,直接的深度優(yōu)先搜索是很難奏效的,所以我們的想法是如何有效的減少數(shù)據(jù)總量。而對于此題來說,雖然我不知道實際測試數(shù)
4、據(jù)的最大的數(shù)據(jù)量(sticks的總數(shù))是多少,但是我只用了一個長為100的數(shù)組保存也沒有越界。說明總的數(shù)據(jù)量不超過100(注:要解這題要我覺得要使用深度優(yōu)先搜索,對于深度優(yōu)先搜索來說100已經(jīng)是很大的數(shù)了)。具體思路對于這個問題,可以有2種不同的解決方法:1.逐個使用l1,l2,ln來填充長棍。2.逐個填充長棍,填完一根長棍,再填下一根。無論是哪一種解題思路,我們都可以“感覺到”如果有如下的關(guān)系成立l1=l2=ln 那么對于解題是十分有利的。事實也是如此,在此種情況下將會比較高效的排除不可能的情況。此題的實際測試結(jié)果也是如此,如果讀入數(shù)據(jù)后沒有排序,我所見過每種算法都會超時。第一種思路的程序框
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);/此步和我的第一個優(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; /此步和我的第三個優(yōu)化類似 if (sticki = length - now) return; 以上的程序段來自與lowai,運行時間是20ms。在這段程序中也使用了一些優(yōu)化,經(jīng)過實驗,在不加入其中任何一個優(yōu)化的情況下,計算結(jié)果都會超時。總結(jié)1.深度優(yōu)先搜索的順序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租別人的地方養(yǎng)雞合同(2篇)
- 預(yù)售房轉(zhuǎn)賣合同(2篇)
- 長江 黃河 課件
- 薩克斯教學(xué)課件
- 植物描寫 課件
- 高考地理一輪復(fù)習(xí)第二章宇宙中的地球及其運動第四節(jié)地球公轉(zhuǎn)及其地理意義課件
- 西南林業(yè)大學(xué)《C語言程序設(shè)計》2023-2024學(xué)年期末試卷
- 西京學(xué)院《網(wǎng)絡(luò)程序設(shè)計》2023-2024學(xué)年期末試卷
- 課件 孝悌文化
- 6以內(nèi)的加減法練習(xí)
- 四川省眉山市2023-2024學(xué)年八年級上學(xué)期語文期中試卷(含答案)
- 期中 (試題) -2024-2025學(xué)年譯林版(三起)英語三年級上冊
- 10以內(nèi)加減法(直接打印,20篇)
- 《田螺姑娘》兒童故事ppt課件(圖文演講)
- 【樓屋面裂縫原因及防治措施研究(論文)】
- GB/T 4337-2015金屬材料疲勞試驗旋轉(zhuǎn)彎曲方法
- 五年級上冊英語課件-Unit5 What do they do?(第一課時) |譯林版(三起) (共17張PPT)
- 《觀察課—桔子》(課堂PPT)
- 定作人指示過失責(zé)任(第10條)
- juniper交換機基本操作手冊
- 各類梁的彎矩剪力計算匯總表
評論
0/150
提交評論