zoukankan      html  css  js  c++  java
  • 【动态规划】数字分组I

    问题 M: 【动态规划】数字分组I

    时间限制: 1 Sec  内存限制: 64 MB
    提交: 106  解决: 59
    [提交] [状态] [讨论版] [命题人:]

    题目描述

    给出一堆魔法石的重量,问如何分成两堆,使得它们质量和之差最小,求出这个最小值。

    输入

    第一行一个数n (n ≤30)。 接下来n行,每行一个正整数。(每个数≤100000)

    输出

     一个整数表示两组数字和的最小差。

    样例输入

    5
    1 2 3 4 5
    

    样例输出

    1
    

    分析:设置背包总量为总和一班。。之前有类似的题,这个比较水。

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <deque>
    #include <map>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    int n,a[35],dp[1500005],sum;
    void init(){
        cin>>n;
        fill(dp,0);
        range(i,0,n-1){
            cin>>a[i];
            sum+=a[i];
        }
    }
    void solve(){
        range(i,0,n-1)
        rerange(j,sum>>1,a[i])dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
        cout<<sum-(dp[sum>>1]<<1)<<endl;
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    DSP builder安装指南(以9.1为例)
    浅谈FPGA电脑
    Altera 在线资源使用
    Altium Designer 发现的机密——摘自CRAZY BINGO
    dom4j 练习
    java 工程和类等路径汇总
    读取xml文件基于xpath
    简化 XML 读写
    Java GUI 开发专题
    java中路径示例
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9347420.html
Copyright © 2011-2022 走看看