背包問題(空間最佳化)經典代碼

 題目有N件物品和一個容量為V的背包。第i件物品的費用是c[i],價值是w[i]。求解將哪些物品裝入背包可使價值總和最大。基本思路這是最基礎的背包問題,特點是:每種物品僅有一件,可以選擇放或不放。用子問題定義狀態:即f[i][v]表示前i件物品恰放入一個容量為v的背包可以獲得的最大價值。則其狀態轉移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}這個方程非常重要,基本上所有跟背包相關的問題的方程都是由它衍生出來的。所以有必要將它詳細解釋一下:“將前i

POJ 2184:

通過這題,我對01背包的認識更深了,01背包可以算在特定體積下(<=V)的最大價值(初始值為0),也可以算體積為V的最大價值(初始值為-無窮大). 對於兩個條件都不定的情況(體積+價值 = 最大),可以先求出一個條件在每種情況下另外一個條件的最大值,如:不同體積下的最大價值。然後在用一個for迴圈,尋找  體積+價值 = 最大 的情況。 這就是 我看完這題得收穫。 堅持。加油。今天對01背包有了更多的收穫了。   核心演算法:01背包大意:

【ACM】Play the Dice-數學機率

一年多沒做題了,今天做了個現參賽的水題,第一感覺題目苦澀,沒讀懂,然後堅持讀了幾遍,懂了邊思考啊,就有了成果。可寫的有兩點吧:1:推導,期望值ans 的組成:第一次的均值+待定均值     即ans =(a1+...an)/n+ans*m/n     最後結果:ans =(a1+..an)/(n-m);     由公式也可以看出 n!=m 由題意也可n==m時 是inf 2:精確度問題,以前老犯這錯誤,都是模模糊糊滴過了,這次尤其注意了一下     在判斷 sum ==0 時 ,用 int

POJ 2429 GCD & LCM Inverse (整數分解,由gcd+lcm求a,b)

題意:給你兩個數a,b的最大公約數和最小公倍數,求a,b。(有多組a,b的情況下取a+b最小的)題解:令 c = a * b / gcd(a,b),對 c 因式分解假如c = p1^k1 * p2^k2 * p3^k3令 d1 = p1^k1, d2 = p2^k2, d3 = p3^k3然後從d1,d2,d3中選取某幾項,使得它們的積 s 最接近sqrt(c),且<=sqrt(c)那麼 a = s * gcd(a,b), b = c / s *

POJ 1284 Primitive Roots (原根,歐拉函數)

轉自:http://www.cnblogs.com/ACShiryu/archive/2011/08/06/poj1284.html/**************************************************************************************************/題意:就是給出一個奇素數,求出他的原根的個數。定義:n的原根x滿足條件0<x<n,並且有集合{ (xi mod n) | 1 <= i <=n-

POJ 2404 Jogging Trails (中國郵遞員問題,狀態壓縮DP)

題意:Gord在為一場馬拉松做準備,他家後面有一個公園,公園裡有許多重路徑,這些路徑串連了水上景點(n<=15)。Gord訓練的時候想走遍所有的路徑至少一次,問她所需要走的最短路程是多長。題解:計算出任意兩點之間的路徑,統計出奇度頂點,找出這些奇度頂點的最小帶權匹配(貌似計算一般圖的最優帶權匹配不太好弄,拆點然後用KM做是不對的)。有一個演算法叫做Edmonds-Johnson演算法可以解決中國郵遞員問題,但是我找不到具體代碼。#include <iostream>using

POJ 2992 Divisors 求一個數的因數的個數

題意:輸入C(n,k), 求該數的因數個數。題解:對於任意質數p, n!中有(n/p+n/p^2+n/p^3+...)個質因子p。#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int MAX = 450;int a[MAX], p[MAX], pn;void prime (){ pn = 0; memset(a,0,sizeof(a));

POJ 1041 John’s trip (歐拉迴路)

題意:John買了新車,想開車去拜訪他的朋友,已知每條街道上都恰巧有他的一個朋友,所以他想穿過每條街道一次並且回到起點。城鎮上街道總數不超過1995,節點總數不超過44,任意一個節點所關聯的街道總數不超過44,每一條街道所關聯的兩個節點都不同,每條街道的編號也不同。起點是第一次輸入的兩個節點中較小的那個。若存在多條迴路,輸出字典序最小的。#include <iostream>using namespace std;#define MAXN 2000#define max(a,b) (

POJ 2337 Catenyms (歐拉迴路)

題意:給你n個單詞,讓每個單詞的最後一個字母恰好等於下一個單詞的第一個字母。構造這樣一個串,使每個單詞恰好被用到一次。取字典序最小的。例如,把 aloha     arachnid    dog   gopher    rat    tiger  串成 aloha.arachnid.dog.gopher.rat.tiger。

POJ 1811 Prime Test 素數測試

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<algorithm>using namespace std;#define lint __int64lint ans;lint gcd(lint a,lint b){ if ( b == 0 ) return a;

HDU 1231 最大連續子序列 (dp)

 Problem Description給定K個整數的序列{ N1, N2, ..., NK },其任意連續子序列可表示為{ Ni, Ni+1, ...,Nj },其中 1 <= i <= j <= K。最大連續子序列是所有連續子序列中元素和最大的一個, 例如給定序列{ -2, 11, -4, 13, -5, -2 },其最大連續子序列為{ 11, -4, 13 },最大和 為20。 在今年的資料結構考卷中,要求編寫程式得到最大和,現在增加一個要求,即還需要輸出該

fork()理解及簡單並發伺服器應用

作者 shallway 發表於 二 08, 2010

POJ 1067 取石子遊戲 (博弈)

取石子遊戲Time Limit: 1000MS Memory Limit: 10000KTotal

POJ 2478 Farey Sequence 快速求歐拉函數/法雷級數

題解:E(x)表示比x小的且與x互質的正整數的個數。1.若p是素數,E(p)=p-1。2.E(p^k)=p^k-p^(k-1)=(p-1)*P^(k-1)證:令n=p^k,小於n的正整數數共有n-1即(p^k-1)個,其中與p不質的數共[p^(k-1)-1]個(分別為1*p,2*p,3*p...p(p^(k-1)-1))。所以E(p^k)=(p^k-1)-(p^(k-1)-1)=p^k-p^(k-1).得證。3.若ab互質,則E(a*b)=E(a)*E(b),歐拉函數是積性函數.由於對任意數n都

酷站欣賞:35個運用視差滾動效果的網頁設計作品

視差滾動(Parallax Scrolling)是新興的網頁設計技術,通過讓多層背景以不同的速度移動來形成立體的運動視差效果,雖然純屬視覺效果,但在內容滾動時形成的視覺體驗非常出色!今天這篇文章就與大家分享35個運用視差滾動效果的網頁設計作品,一起欣賞(以拖動捲軸方式瀏覽效果會更佳)。一些事Mo's and BowsNetlash bSeenSullivan NYC互連網的一些事Eric JohanssonyixieshiAtlantis World's FairJan

騰訊的面試題(關於指標)

題目:int a[]={1,2,3,4,5,6,7,8,9};short *p=(short*)(a+2);short

POJ 3090 Visible Lattice Points 法雷級數

題意:從原點看第一象限裡的所有點,能直接看到的點的數目是多少。(不包含原點) 法雷級數定義  R.亨斯貝爾格著李忠翻譯的《數學中的智巧》一書,介紹了法雷級數。這裡每一行從0/1開始,以1/1結尾,其它數自左至右將所有的真分數按增加順序排列;第n行是由所有分母小於或等於n的真分數組成,我們稱為n階法雷級數。如下表:  F1: 0/1 1/1   F2: 0/1 1/2 1/1   F3: 0/1 1/3 1/2 2/3 1/1   F4: 0/1 1/4 1/3 1/2 2/3 3/4 1/1  

POJ 3358 Period of an Infinite Binary Expansion 歐拉函數+歐拉定理

題意:輸入一個有理數p/q(保證是一個小數),然後將其小數部分用二進位表示。求出在此種表示下的迴圈起點和迴圈節長度{x} = 0.a1a2...ar(ar+1ar+2...ar+s)w題解:來自Discuss我們可以觀察一下1/10這組資料,按照二進位轉換法(乘二法),我們可以得到:1/10  2/10 4/10 8/10 16/10 32/10 ...然後都分子都儘可能減去10,得到:1/10  2/10 4/10 8/10 6/10 2/10

POJ 3517 And Then There Was One 約瑟夫環

題意:約瑟夫環。題解:直接類比了···#include<iostream>#include<cstdio>#include<cstring>using namespace std;struct NODE{ int id; NODE *next, *pre;};NODE node[10009];void build_list ( int n ){ for ( int i = 2; i < n; i++ ) {

POJ 2960 S-Nim

題意:在普通的Nim遊戲上加入一些限制。給定一個集合S, 每次只能取S的元素個石子。題解:SG函數。#include <iostream>using namespace std;#define MAXN 105#define MAXM 10005int h[MAXN];int s[MAXN];int SG[MAXM];int k;void DFS ( int x ){if ( SG[x] != -1 ) return;bool check[MAXM] = { 0 };int i,

總頁數: 61357 1 .... 13167 13168 13169 13170 13171 .... 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.