• csu 1547: Rectangle (01背包)


    题意:说有1*x和2*x的长方形(1和2只能作为宽 )
    有一个2*m的空间
    问如何组合才能使m的值最小 思路:对2x的长方形不需要得讨论
    对1x的长方形的记录总长度 并01背包
    找到最接近sum/2 的值
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<stdlib.h>
    #include<algorithm>
    #include<queue>
    #include<stack>
    #include<ctype.h>
    using namespace std;
    const int MAXN=100+5;
    int vis[10000+100];
    int a[MAXN];
    int cmp(int a,int b)
    {
        return a>b;
    }
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n,ans=0,cnt=0,res=0,maxn=0,minn,numa=0,numb=0,sum=0;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                int op,num;
                scanf("%d %d",&op,&num);
                if(op==2) ans+=num;
                if(op==1) {a[cnt++]=num;sum+=num;}
            }
            if(cnt>0)
            {
               memset(vis,0,sizeof(vis));
               vis[0]=1;
               for(int i=0;i<cnt;i++)
               {
                   for(int j=10000;j>=a[i];j--)
                   {
                       if(vis[j-a[i]]==1) vis[j]=1;
                   }
               }
               int hsum=(sum+1)/2;
               int l=hsum;//r=hsum;
               while(vis[l]==0)
               {
                   l--;
               }
               maxn=max(l,sum-l);
            }
            res=ans+maxn;
            printf("%d
    ",res);
        }
        return 0;
    }
    

      

  • 相关阅读:
    智联招聘
    我的Linux以及软件配置(长期更新)
    关于Git的笔记
    PHP和HTML表单
    web学习笔记——CSS整理(一)
    新开通博客园
    Thinphp模板替换
    __APP__
    大步前行
    centos 7 添加环境变量
  • 原文地址:https://www.cnblogs.com/sola1994/p/4376362.html
Copyright © 2020-2023  润新知