背包問題——“完全背包”最優方案總數分析及實現

 -----Edit by ZhuSenlin HDU        本人博文《背包問題——“完全背包”詳解及實現(包含背包具體物品的求解)》中已詳細談過完全背包問題,同時在博文《背包問題——“01背包”最優方案總數分析及實現》中也總結過01背包的最優方案總數的實現。這裡我們模仿01背包最優方案總數方法給出完全背包的最優方案求解方法。            重寫完全背包的動態規劃的狀態及狀態方程:       

這幾天寫了個LZW壓縮演算法

之前看了一下gif的檔案格式,看到裡面的資料區塊都是用lzw演算法壓縮的。所以就按照裡面描述的演算法自己實現了一個,用了3天時間,現在注意力不集中,而且代碼實現的速度也很慢。第一天,讀懂演算法,並編寫了壓縮函數,經紙筆檢查,對小資料量和手工計算的編碼是一致的。第二天,編寫部分解壓函數,玩遊戲總分心,沒弄完。第三天,編寫解壓函數,尋找各種bug;在調通以後,發現當遇到大檔案的情況,索引表滿了時還需要重新初始化,又進行了修改,終於弄好了。壓縮,然後解壓,看著產生內容和原檔案無差別,心裡那個高興啊。然

關於裝置掛載的若干問題

1 可以用`mount`或`df`查看掛載情況2 我裝了win7和OpenSUSE雙系統,昨天進linux案頭後,想開啟windows的分區的檔案,OpenSUSE預設帶有dolphin軟體,可以協助瀏覽,使用起來和windows的資源管理員差不多,然而遇到中文檔案名稱的時候出現亂碼。terminal輸入`locale -a |grep

關於Chrome瀏覽器的一個bug

使用Chrome瀏覽器的時候,有時候會遇到點擊超連結全部視為下載的情況。而且這時候你點擊鍵盤時,全部變成了快速鍵,按‘D’會跳到地址欄,按‘F’會快顯功能表……無奈下只好關了Chrome重新開啟。後來網上查了一下,發現是快速鍵Alt+某些鍵會產生這樣的效果,但是可以肯定我的Alt鍵沒有卡,所以應該是Chrome瀏覽器的bug,判斷Alt處於按下狀態了。網上提供的解決辦法是再按幾下Alt鍵,讓Chrome修正這個bug狀態。

矩陣乘法的最佳化

題目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1113昨晚為了最佳化這個題目弄到2點多,今天一早就寫博,我真是太不蛋定了,哈哈。做OJ的朋友都知道快速冪,我就不羅嗦了,我說的主要是矩陣乘法實現層面的最佳化。最開始My Code耗時1156ms,代碼如下:void mat_mul( int (*a)[MAXN], int (*b)[MAXN], int (*c)[MAXN], int n ) {

[ACM] 經驗總結(一)

1>

[MFC] 使用CScrollView應該注意的地方

一般CScrollView都是用在文檔視圖結構裡,裡面可以放置圖片、表格、etc.但是我們往往在開始使用的時候會有一些困惑。例如怎麼設定大小,我們知道調用SetScrollSizes,但是在哪裡調用?我曾經的做法是在OnInitialUpdate和OnUpdate裡都調用,用意是OnInitialUpdate裡初始化一個合適的大小(因為SetScrollSizes很脆弱,一旦值有小於等於0的就出錯),然後再在開啟圖片的時候重新調整View的大小,即在OnUpdate裡找到圖片的大小後來設定。可啟

關於gcc412的最佳化bug

之前在搜狗曾經看過一篇技術文章,詳細講述了gcc編譯器的一個最佳化bug,也就是在開-O2的時候,彙編指令不對。但是沒往心裡去,逐漸淡忘。前一段時間申請了虛機,就在上面yum install gcc,預設提供的還是4.1.2版本的。這也造成了我的一個悲劇(因為這個bug折騰了半天)。一般沒有人會去懷疑編譯器的,是吧?進入正題,最近在寫一個小的網路程式,用C++寫server,用java寫client,因為網路傳輸涉及到byte order的問題,一般是統一轉成big

感覺很不爽!

首先聲明,我只是發發牢騷,大家看看一笑而過吧。 幾個月前,在領取大禮包時,看到推薦文章有個CodeBlock的宣傳貼,很火。遂加入QQ群,偶爾發幾句話。 前幾天在群裡開個玩笑,說asmwarrior是“犒人”,又牛又高,如果大家聽說過諸如“犇眾”、“牡人”、“朱人”的稱呼,應該明白這些字不過是一堆組合而已,無貶義。 結果呢,沒過多久,被老鄧踢出了群,沒有任何通知。接著訂閱的googlegroups也被拒絕。用我小人之心揣測,應該是老鄧認為我得罪了他心目中的神——asmwarrior。 從技術上講

[Solver] SPOJ FINFRAC

題目地址:http://www.spoj.com/problems/FINFRAC/題目大意:給4個整數a,b,c,d,尋找兩個整數p,q,使得a/b < p/q < c/d,需要q是最小的,如果存在多個解,那麼找到p是最小的。解法1(證明不嚴格):有個序列叫做法雷序列,法雷序列的神奇之處在於如果a/b < c/d,則 a/b < (a+c)/(b+d) < c/d,那麼還有 a/b < (2a+c)/(2b+d) < (a+c)/(b+d) < 

TeX(CTeX,LaTeX)的安裝步驟與資源清單

資源清單0 一個線上LaTeX數學編輯器(可滿足大部分需求):http://latex.codecogs.com/editor.php1 CTeX:http://www.ctex.org/CTeXDownload2 WinEdt7的破解:2.1 一個去掉“暗樁”的可執行程式:http://download.csdn.net/download/bloodsucker85/45913032.2 對可執行程式進行patch的破解程式:http://download.csdn.net/download/

[CUDA] 關於CUDA的配置與入門(for Greenhand)

開始接觸CUDA,我安裝好後完全不知道怎麼運行demo,當然也沒有見到詳細的安裝說明。下面說說我的經驗。 Platform:Win XP64IDE:VS2008     1 擷取可訪問以下網址:http://www.nvidia.com/object/cuda_get.html共需下載3個應用程式,分別是:1>     CUDA Driver2>     CUDA Toolkit3>     CUDA SDK code samples可以選擇合適的作業系統,例如我選的是WIN

LaTeX下代碼高亮(關鍵字,CTeX, WinEdt, minted, highlight)

今天想在LaTeX插入代碼,高亮顯示,網上基本上都建議使用listings宏包,但是試用了一下,發現效果一般。後來發現了另一個叫minted的宏包,使用簡單,效果好,c++的效果如下:但是需要安裝很多東西,下面整理一下安裝流程。我的環境是win7-64bit,已經安裝了CTeX套裝,平時使用WinEdt來編輯(就是如何在WinEdt上添加命令列參數困擾了我半天)。1

[CUDA] CUDA下在Host端分配的幾種記憶體模式

Pageable VS Pinned 平時我們使用的記憶體都是Pageable(交換頁)的,而另一個模式就是Pinned(Page-locked),實質是強制讓系統在實體記憶體中完成記憶體申請和釋放的工作,不參與頁交換,從而提高系統效率,需要使用cudaHostAlloc和cudaFreeHost來分配和釋放。     優點        1、頻寬更高        2、核心處理和記憶體拷貝可同時進行        3、可以記憶體映射(mapped)    缺點       

面試題集1

1、微軟面試題:利用天平砝碼,三次將140克的鹽 分成50、90克兩份?    

[CUDA] 關於寫顯卡記憶體的問題。

今天嘗試用cuda把FFT實現,遇到了難題。直接調用cufft庫的話,記憶體拷貝與資料處理的時間比大約是1:2。但是據說cufft並不是最高效的,所以想自己鍛煉一下。 我的思路是將二維的每一行映射到一個block,每個點都是一個thread。先將資料拷貝到顯卡全域記憶體,然後拷貝到每個block的共用記憶體,這是因為讀取global memory會佔用更多的指令周期。然後就是處理這段shared memory,可是每當寫的時候就會很慢,後來仔細閱讀了一下bank

[ACM] 推薦做題的OJ

1>  http://poj.org/    特點:題目很多,對提交的結果有各種排序(已耗用時間、記憶體大小、代碼長短等),可以對各種目標最佳化,有時候做題並不僅僅是為了AC,不是嗎?2> http://codeforces.com   

數論證明題(1)

0001命題:設k為質數p的最大冪,使得,設n寫成p進位每個位分別是,,則證明:我們知道,n的階乘是n個數相乘,其中p的倍數有個,將這些數都提取一個p因子出來,則只剩下個數還含有p因子,以此類推,可得然後將右側等式變換一下,將看成一個值,可以看到最右側兩項可以遞迴下去,最後就變成,命題得證。參考文檔www.dms.umontreal.ca/~andrew/PDF/BinCoeff.pdf

模數速度最佳化

做ACM題時,經常遇到模數操作,而模數操作是算術操作中最慢的(在當前的電腦硬體中基本都是這樣)。1 對2的冪模數(2^k),實際等同於和(2^k - 1)進行“位與”操作例如對8模數,因為電腦內部是二進位表示,所以可以對二進位位進行位與操作。n % 8 == ( n & 7 ) // 因為C語言模數操作會返回負數,所以當n是負數時,它們是同模關係。2 經常有一些遞推式,是加和後求模關係,這時可以利用有限範圍的特性,將求模轉換為加減法// 例如dp[0] = dp[1] = 1dp[i]

字串轉化為數值

工作時遇到這樣的一個情況:伺服器A向B發送請求並接受結果,耗時300ms,伺服器B從接受請求到發送完畢,耗時100ms。由於是內網,不可能有200ms的網路延遲。後經檢測,是因為傳輸時用的是字串格式,解析時用了sscanf造成的。由於sscanf要考慮到變參問題,並且接受的種類更加豐富(相對於strto*函數族),所以會很慢,之前我以為scanf函數族慢是因為IO,現在看來當時的看法很幼稚。經過測試對比,發現還是手工編寫的有針對性的代碼速度更快。測試代碼如下(其中測時類Timer是我自己定義的,

總頁數: 61357 1 .... 13579 13580 13581 13582 13583 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.