zoukankan      html  css  js  c++  java
  • POJ 3628 01背包 OR 状压

    思路:
    1.01背包
    先找到所有奶牛身高和与B的差。
    然后做一次01背包即可
    01背包的容积和价格就是奶牛们身高。
    最后差值一减输出结果就大功告成啦!
    2.
    搜索
    这思路很明了吧。。。 搜索的确可以过…
    3.
    模拟!
    0到1< < n 来一遍。(状压呗)

    01背包的:

    // by SiriusRen
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int N,B,sum=0,h[25],f[1000555];
    int main(){
        scanf("%d%d",&N,&B);
        for(int i=1;i<=N;i++)scanf("%d",&h[i]),sum+=h[i];
        sum-=B;
        for(int i=1;i<=N;i++)
            for(int j=sum;j>=h[i];j--)
                f[j]=max(f[j],f[j-h[i]]+h[i]);
        printf("%d
    ",sum-f[sum]);
    }

    代码很短。。

    状压的:

    // by SiriusRen
    #include <cstdio>
    using namespace std;
    int N,B,sum=0,h[25],jy,ans=0x3fffffff;
    int main(){
        scanf("%d%d",&N,&B);
        for(int i=0;i<N;i++)scanf("%d",&h[i]);
        for(int i=0;i<1<<N;i++){
            int jy=0;
            for(int j=0;j<N;j++)
                if(i&(1<<j))jy+=h[j];
            if(jy>=B&&jy<ans)ans=jy;
        }
        printf("%d
    ",ans-B);
    }

    代码都很短。。。。

    这里写图片描述

  • 相关阅读:
    数据结构与算法
    android vitamio的坑
    Fragment的坑
    scrollview里面嵌套listview的坑
    关于微信小程序的tabbar
    Intent初级学习
    HDU 4562 守护雅典娜
    SGU 542 Gena vs Petya
    [二] EditText and Button
    A Data Structure for Dynamic Trees
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532349.html
Copyright © 2011-2022 走看看