看來還是需要好好理解背包的含義啊!本來鄙人寫了3600+的代碼,各種悲劇。果然還是對背包的理解不深啊!看過人家的代碼後才A出來.....#include<iostream>#include<string>#include<cstdio>using namespace std;int dp[111][111];int max( int a,int b ){ return a>b?a:b; }int max( int a,int b,int c ){
好好琢磨一下吧 DP....#include<iostream>#include<string>#include<cstdio>#include<algorithm>using namespace std;int f[2222][2222];int min( int a,int b ){ return a<b?a:b; }bool cmp( int a,int b ){ return a<b; }int powsum( int
B-Travel By AirlineTime Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)Total Submission(s) : 24 Accepted Submission(s) : 1Font: Times New Roman | Verdana | GeorgiaFont Size: ← →Problem DescriptionYou have won a chance
題目大意:求給出串的每個首碼串的重複次數。例如aabaabaabaab;1.aa中首碼a出現2次。2.aabaab中首碼aab出現2次3.aabaabaab中首碼aab出現3次4.aabaabaabaab中首碼aab出現4次.大概就是這麼個意思。這裡利用了kmp中的next標記的性質。看看這個字串下標:1 2 3 4 5 6 7 8 9 10 11 12原串:a a b a a b a a b a a bnext: 0 1 2 1 2 3
開始沒有想法,後來一想,這是一道很明顯的DP題,當前點的的邊長正方形,決定於左邊下面左下角三個點的狀態。這樣就可以構造出一個更大的方形。/*ID:bysenLANG:C++PROG:range*/#include<stdio.h>using namespace std;int min( int a,int b ){ return a<b?a:b; }int min( int a,int b,int c ){ return a<min(b,c)?a:min(b,c);
哈哈~這題秒掉了,總的來說這些天的DP苦修還是有點成果的。哇哈哈哈。做題過程大概是這樣的,前幾天看了下這題,完全不敢切,果斷的沒思路。今天再一看,在紙上用筆演練了下,發現基本上能推出公式了。呵呵,蠻好玩的麼,DP,雖然只是道水題,但是也說明了我在進步啊~ 哈哈哈#include<iostream>#include<string>#include<cstdio>using namespace std;int min( int a,int b ){ return
網路上題解很多。我就不亂說了。首先分組背包的原型:給物品分組,容量為V的背包,每個分組內的物品互斥,每個分組最多取一個物品。求最大值。代碼很簡單:for( int i=0;i<group;i++ )for( int j=V;j>=0;j-- )for( int k=0;k<total[i];k++ ) f[V]=max( f[V],f[V-cost[k]]+value[k] );背包九講裡面有,相信大家都看了。不多說。而這題,是在每個分組中最少取一種物品。so~ 不能用一維了,