最長上升子序列O(n*lg(n))代碼

問題描述:所謂子序列,就是在原序列裡刪掉若干個元素後剩下的序列,以字串"abcdefg"為例子,去掉bde得到子序列"acfg"現在的問題是,給你一個數字序列,你要求出它最長的單調遞增子序列。輸入:多組測試資料,每組測試資料第一行是n(1<=n<=10000),下一行是n個比1e9小的非負整數輸出:對於每組測試資料輸出一行,每行內容是最長的單調遞增子序列的長度範例輸入:51 2 4 8 1651 10 4 9 790 0 0 1 1 1 5 5 5範例輸出:533 [分析]   

多重背包中多次背包 O(VN) 演算法1 (單調隊列最佳化) 帶參考程式

多次背包 多次背包問題:給定 n 種物品和一個背包。第 i 種物品 的價值是 Wi ,其體積為 Vi,數量是 Ki件,背包的容量為 C。可以任意選擇裝入背包中的物品,求裝入背包中物品的最大總價值。 方法一:可以把此物品拆分成Ki個只能用一次的物品,直接套用 0-1 背包問題的經典動規實現,但是效率太低了,需要尋找更高效的演算法。此演算法時間複雜度為O(C*∑(Ki)) 方法二:拆分成體積和價值分別為原來1, 2 , 4..   2^m,    Ki-2^m 倍的幾個物品,用0-1背包求解。

不得不轉載!文章寫得太好!匈牙利演算法!求二分圖匹配!

匈牙利演算法連結:USACO 4.2.2 The Perfect Stall 完美的牛欄 stall4這是一種用增廣路求二分圖最大匹配的演算法。它由匈牙利數學家Edmonds於1965年提出,因而得名。 定義 未蓋點:設Vi是圖G的一個頂點,如果Vi 不與任意一條屬於匹配M的邊相關聯,就稱Vi 是一個未蓋點。交錯路:設P是圖G的一條路,如果P的任意兩條相鄰的邊一定是一條屬於M而另一條不屬於M,就稱P是一條交錯路。可增廣路:兩個端點都是未蓋點的交錯路叫做可增廣路。 流程圖虛擬碼:bool

UVa10718 – Bit Mask(不錯的貪心)

#include<cstdlib>#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<set>#include<map>#include<list>#include<queue>#include<vector>#define LL

UVa 10670 – Work Reduction(水)

#include<cstdlib>#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<set>#include<map>#include<list>#include<queue>#include<vector>#define LL

uva507 – Jill Rides Again(好題)

#include<cstdlib>#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<set>#include<map>#include<list>#include<queue>#include<vector>#define LL

DP最大M子段和

給定n個數求這n個數劃分成互不相交的m段的最大m子段和。  經典的動態規劃最佳化的問題。設f(i, j)表示前i個數劃分成j段,且包括第i個數的最大m子段和,那麼有dp方程:    f(i, j) = max { f(i - 1, j) + v[i], max {f(k, j - 1) + v[i]}(k = j - 1 ... i - 1) }  也就是說第i個數要麼自己划到第j段,要麼和前一個數一起划到第j段裡面,轉移是O(n)的,總複雜度O(n * n *

HDU4067 Random Maze 最小費用最大流 福州網路賽

 Random MazeTime Limit: 10000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 243 Accepted Submission(s): 63Problem DescriptionIn the game “A Chinese Ghost Story”, there are many random mazes which have some

HDU 4345(想不出來的DP)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=4345題目大意:求長度為n的數列的置換的迴圈節的長度的種數。題目思路:以下摘自題解: 迴圈節的長度為各獨立置換環長度的最小公倍數。問題即求相加和為N的正整數的最小公倍數的可能數。由於1不影響最小公倍數,問題轉化為相加小於等於N的若干正整數的最小公倍數的可能數。如果這些正整數包含大於一個質因子,只會使得正整數的和更大。因而問題再次轉化為相加小於等於N的若干質數的最小公倍數的可能數。N<1000

HDU 4069 Squiggly Sudoku 數獨DLX 福州網路賽

 Squiggly SudokuTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 644 Accepted Submission(s): 111Problem DescriptionToday we play a squiggly sudoku, The objective is to fill a 9*9 grid with digits

為什麼要使用XML

XML代表擴充標記語言(Extensible Markup Language),是由World Wide Web Consortium(W3C)的XML工作群組定義的。這個工作群組是這樣描述該語言的:“擴充標記語言(XML)是SGML的子集,其目標是允許普通的SGML在Web上以目前HTML的方式被服務、接收和處理。XML被設計成易於實現,且可在SGML和HTML之間互相操作。”     “關於此規範的正確題目,亦即XML的正確全名,應該是Extensible Markup Language,

JNDI理解心得

JNDI是一個支援訪問java程式中命名和目錄服務的API。命名服務的作用是把名字和對象聯絡起來,並提供一種通過對象名訪問對象的方式。命名系統的對象覆蓋了檔案系統中的檔案和DNS記錄中的名字,以及EJB組件和LDAP目錄下的使用者系統設定檔。JNDI不僅僅出來命名服務,還包含目錄服務。目錄服務。目錄服務是對命名服務的擴充。這兩者的區別在於,目錄服務允許屬性與對象的關聯。舉例來說,在SUN提供支援的檔案系統服務中,一個檔案名稱即對應一個java.io.File的執行個體。如尋找C:/TEMP/sy

二級指標的妙用

    如果我們想在另外的一個程式中改變某個指標的值,則必須勇二級指標實現.其實指標作為函數的參數時,只需要遵循一個原則就可以.即:一定要傳遞你要操作的對象的地址.    void getMemory(char *p, int num)    {       *p = (char *) malloc(num);    }    int main(int argc, char **argv)    {       char *str = NULL;      

uva141 – The Spot Game

直接暴力:#include<cstdlib>#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<set>#include<map>#include<list>#include<queue>#include<vector>#defin

學校 你得到我的人 得不到我的心

剛剛考試一激動,把考號寫成了QQ號。總有那麼幾個人,老師一叫他們起來回答問題,全班就笑。升旗時注意力不是在國旗上,而是看看國歌奏完時,國旗是不是正好停在杆頂。班主任是什麼:就是一個破壞完你友情再破壞你愛情還不放過你親情的人。上學時,總有那麼一種感覺,100元不能破開,破開很快就沒有了。在與寒假先森約會的時候總會出現一個叫寒假作業的小三。如果作業可以複製,粘貼孩子們該多高興。開學前一天晚上,我國用電量將直線上升。真想一覺醒來,我在小學教室對小學同桌說:“我做了好長一個夢。”這次考試考得很不錯啊,只

URAL 1105(WA中……搞不定啊!!)

#include<cstdio>#include<iostream>#include<cstdlib>#include<algorithm>#include<cmath>#include<string>#include<cstring>#include<set>#include<map>#include<list>#include<queue>#include<

SDUT 2411——Pixel density類比細節WA了n遍

網址:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2411山東省第三屆ACM省賽的題。注意點:1、小數點可以沒有,用小數點和星號做分隔字元的可以省省了。2、空格沒說幾個,用getline()相當麻煩,不如手動輸入字串數組。3、inches不是唯一分隔字元,手機名稱中可能帶inches字樣,所以應該find_last_of("inches")(我沒有用這個方法)4、注意0.00的結果。5、手機

hdu4630(樹狀數組+離線處理)

http://www.cnblogs.com/kuangbin/archive/2013/07/30/3225627.html題意:給出一個n和1到n的某個排列,詢問q次,每次詢問[l,r]區間內任意挑兩個數,最大公約數的最大值是多少。#include<cstdio>#include<iostream>#include<cstdlib>#include<algorithm>#include<cmath>#include<strin

ZOJ 3327(思路題)

題解:給定一個很大的數,求一個比其大,且各位上的數的積相等。情況: 如果數字當中有0,故單獨判斷,只要將其最後一位+1,但當有且僅有一個0且0在最後一位,我們得特殊處理,不然最後一位+1,把0給去掉了,故從倒數第二位開始。其他情況,從低位向高位遍曆,記錄2,3,5,7的個數,對於每個位,看是否可以用已經有的2,3,5,7的個數構成大於此數的最小數,如果存在這個數字,那麼可以停止遍曆,此數高位的數保持不變,低位的數:從低位遍曆,用已有的2,3,5,7構造盡量大的小於10的數;如果不存在這個數字,結

四邊形不等式最佳化dp-簡介

最有代價用d[i,j]表示 d[i,j]=min{d[i,k-1]+d[k+1,j]}+w[i,j] 其中w[i,j]=sum[i,j] 四邊形不等式        w[a,c]+w[b,d]<=w[b,c]+w[a,d](a<b<c<d) 就稱其滿足凸四邊形不等式 決策單調性      w[i,j]<=w[i',j']   ([i,j]屬於[i',j']) 既 i'<=i<j<=j'於是有以下三個定理 定理一: 如果w同時滿足四邊形不等式 和

總頁數: 61357 1 .... 13808 13809 13810 13811 13812 .... 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.