POJ 3628 Bookshelf 2 水DP

来源:互联网 发布:布瑞克农业大数据 编辑:程序博客网 时间:2024/05/23 00:10

为什么贴这题呢。主要是昨天的比赛全是DP。一道都不会,最近做了很多图论,但是碰上DP就全死了。

这题也算我学DP的一个开始吧。

现在对于DP的认识还是很浅层次的,昨天魏神最后4分钟A掉的DP震惊全场,也萌生了我学习DP的念头。

但是这也不是说学就能学好的,还是得好好静下心来,DP的题最重要的就是推状态转移方程。

加油吧。!

#include <iostream>#include <cstdio>#include <algorithm>#include <string>#include <cmath>#include <cstring>#include <queue>#include <set>#include <vector>#include <stack>#include <map>#include <iomanip>#define PI acos(-1.0)#define Max 2005#define inf 1<<28using namespace std;bool dp[20000000];int main(){    int num[21];    int i,j,k=0,l,n,m;    cin>>n>>m;    for(i=0; i<n; i++)        cin>>num[i],k+=num[i];//最大的高度    memset(dp,0,sizeof(dp));    dp[0]=1;//0可达    for(i=0; i<n; i++)    {        for(j=k-num[i]; j>=0; j--)            if(dp[j])dp[j+num[i]]=1;//如果dp[j]可达,那么dp[j+其他牛的高度]都可达    }    for(i=m; i<=k; i++)        if(dp[i])//找到最接近m的可达的高度        {            cout<<i-m<<endl;            break;        }    return 0;}


原创粉丝点击