题目描述 Description

给定n个整数in和目标值T,求某一非空子集使 子集的元素的和 与 目标值之差 的绝对值最小,元素可重复

输入描述 Input Description

第一行为整数n T

n为整数个数,T为目标值

第二行为n个整数in

输出描述 Output Description

一个整数d,为差的最小值的绝对值

样例输入 Sample Input

5 9

1 1 1 4 17

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

1<=n<=101

0<=T<=2147483647

0<=in<=2147484647

放心,n很大的时候数据都很弱…

/*这个题纯用背包做会超空间的,因为目标值太大了,而且题目说目标值大的时候n会很小,所以分情况讨论,当目标值很大时,用dfs,否则用背包
*/
#include<cstdio>
#include<iostream>
#include<cstdlib>
#define ll long long
#define M 10000010
#define N 110
using namespace std;
bool f[M];
ll n;
ll sum,ans,v[M],goal;
void dfs(int t,ll tot)
{ans=min(ans,(ll)abs(tot-goal));if(t>n)return;if(goal<tot)return;dfs(t+1,tot);dfs(t+1,tot+v[t]);
}
int main()
{cin>>n;cin>>goal;for(int i=1;i<=n;i++)cin>>v[i],sum+=(ll)v[i];ans=sum;if(sum<=goal)printf("%lld",(ll)abs(sum-goal));else if(sum<=M-10){f[0]=1;for(int i=1;i<=n;i++)for(ll j=sum;j>=v[i];j--)if(f[j-v[i]])f[j]=1;for(ll i=0;i<=sum;i++)if(f[i])ans=min(ans,(ll)abs(i-goal));printf("%lld",ans);}else{dfs(1,0);printf("%lld",ans);}return 0;
} 

View Code

转载于:https://www.cnblogs.com/harden/p/5781102.html

子集和的目标值(codevs 1692)相关推荐

  1. 实验四: 子集和问题

    一.内容 子集和问题的一个实例为<S,c>.其中,S={x1,x2,...,xn}是一个正整数的集合,c是一个正整数.子集和问题判定是否存在S的一个子集S1,使得试设计一个解子集和问题的回 ...

  2. 【9502】子集问题

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 子集和问题的一个实例为〈S,C 〉.其中,S={ X1 ,X2 ,-,Xn } 是一个正整数的集合,C是一个 ...

  3. 算法分析-子集和数,回溯法

    #include <iostream> #include <algorithm>/*题目描述 子集和问题的一个实例为〈S,t〉.其中,S={ 1 x , 2 x ,-, n x ...

  4. 子集和问题 深搜回溯法

    我的哔哩哔哩账号 4.子集和问题 [问题描述]         子集和问题的一个实例为<S,t>.其中,S={ x1,x2,-,xn}是一个正整数的集合,c是一个正整数.子集和问题判定是否 ...

  5. educoder算法设计与分析 实验五回溯法

    实验五 回溯法 第1关:排列 第2关:子集合 第3关:TSP问题 第4关:n皇后问题 第5关:0-1背包 第1关:排列 题目描述: 1.设计算法从前m个大写字母(m≤26)种取出n个字母的所有排列(组 ...

  6. c语言最短加法链问题回溯法,《回溯法习题》PPT课件.ppt

    1,课程安排,第5章 回溯法习题课,3,第5章 回溯法习题,子集和问题 最小长度电路板排列问题 最小重量机器设计问题 运动员最佳匹配问题 无分隔符字典问题 无和集问题 n色方柱问题 整数变换问题 拉丁 ...

  7. 动态规划: dp+递推——确定动态矩阵dp含义,确定每个状态下面临的选择和对结果值影响,选择符合题意的作为结果存储在dp中

    1.动态规划:每一个状态一定是由之前的状态推导出来的,通过总结归纳发现递推关系 2.解决动态规划问题的步骤: 确定dp数组(dp table)以及下标的含义: 每个单元内 题目所求的值,一维.二维 确 ...

  8. 一本通 搜索与回溯专栏

    全排列问题(form.cpp) [问题描述] 输出自然数1 到n 所有不重复的排列,即n 的全排列,要求所产生的任一数字序列中不允许出现重复的 数字. [输入形式] n(1≤n≤9) [输出形式] 由 ...

  9. sdut算法分析oj题目整合

    A-众数问题(分治算法A-D) Description: 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为众数.例如,S={1,2,2,2,3,5} ...

最新文章

  1. ArcGIS AddIN开发异常之--修饰符“static”对该项无效
  2. JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情
  3. Hive常用运算(关系运算)、逻辑运算与数学运算、数值运算、日期函数、条件函数、字符串函数
  4. python删除空白没有显示_删除Python字符串中的空白
  5. python中的set和dict_Python中dict和set的用法讲解
  6. PropertiesUtil 获取文件属性值
  7. java 设计模式_Java设计模式的常见应用场景
  8. commix 命令注入获取信息 (好东西)
  9. J2EE如何生成验证码图片和点击刷新验证码
  10. 計算機二級-java09
  11. vue main.js中引入js_手把手教你深入Vue3.0(Vue-cli4)项目打包性能优化实践
  12. virt-install选项详解
  13. ubuntu 普通用户下设置tab键自动补全
  14. J - X and Beasts
  15. mac 下安装iwork+ps+nx2
  16. 简谈触摸板程序的实现(一)
  17. 软件测试方法和技术知识点有哪些?
  18. IPD开发流程TR1-TR6各个阶段简介
  19. Flash 3D之旋转文字
  20. 网络编程之TCP例子一(帅帅老师讲堂)

热门文章

  1. 数列极限---和Gauss(取整)函数有关
  2. 《JAVA程序设计》第七周学习总结
  3. iis 程序池设置及详解-20180720
  4. 【学习总结】之 3Blue1Brown系列
  5. yield - python
  6. Session 过期问题处理
  7. 使用 Application Developer V7 来创建和部署 JSR 168 协作 portlet
  8. Android4.0 Design之设计规范的十大革新
  9. Observable.OnSubscribe 的理解
  10. 【剑指offer-Java版】33把数组排成最小的数