0/1背包总结(持续更新...)
数字分组问题
Problem 1:给定n个物品,将它们分成两堆,使他们的质量之差最小,求这个最小值
poj 2311
Sol:差最小是0,此时分成的两堆的质量都是sum/2,因此让背包的总容量为sum/2,就是让某一堆尽量接近sum/2,此时两堆的差最小
Code:
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<map> using namespace std;int m,n; int col; map<string,int>mch; int v[15][110],sum[15]; int f[500*1010];int main(){scanf("%d%d",&m,&n);while(n&&m){col=0;//memset(mch,0,sizeof(mch)); mch.clear();memset(v,0,sizeof(v));memset(sum,0,sizeof(sum));string s;for(int i=1;i<=m;++i){cin>>s;mch[s]=++col;s.clear();}int x;for(int i=1;i<=n;++i){scanf("%d",&x);cin>>s;v[mch[s]][++v[mch[s]][0]]=x;sum[mch[s]]+=x;s.clear();}int ans=0;for(int t=1;t<=col;++t){memset(f,0,sizeof(f));for(int i=1;i<=v[t][0];++i)for(int j=sum[t]/2;j>=v[t][i];--j)f[j]=max(f[j],f[j-v[t][i]]+v[t][i]);ans+=sum[t]-f[sum[t]/2];}printf("%d\n",ans);scanf("%d%d",&m,&n);}return 0; }
View Code
Problem 2:给定n个物品,将它们分成两堆,使他们的质量之差最大,但不能超过这些物品中最大的质量
没找到题,求资源
Sol:相差最大时,两堆物品的质量分别是(sum+max)/2,(sum-max)/2,因此让背包容量为(sum+max)/2即可
Code:
1 #include<cstring> 2 #include<cstdio> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 7 int n,m,mx=-0x3f3f3f3f,sum; 8 int a[30]; 9 bool f[20*100010]; 10 11 int main(){ 12 scanf("%d",&n); 13 for(int i=1;i<=n;++i) scanf("%d",&a[i]),sum+=a[i],mx=max(mx,a[i]); 14 m=(sum+mx)/2; 15 f[0]=1; 16 for(int i=1;i<=n;++i) 17 for(int j=m;j>=a[i];--j) 18 f[j]|=f[j-a[i]]; 19 for(int i=(sum-mx)/2;i<=sum/2;++i) 20 if(f[i]&&f[sum-i]){ 21 cout<<sum-2*i;return 0; 22 } 23 return 0; 24 } 25 26 27 /* 28 5 29 2 4 5 8 10 30 */
View Code
转载于:https://www.cnblogs.com/Secret-Service/p/7466281.html
0/1背包总结(持续更新...)相关推荐
- Spring Boot 2.4.0 M2 Release Notes持续更新
Spring Boot 2.4.0 M2 Release Notes持续更新 Spring Boot 2.4.0 M2 Release Notes Spring Boot 2.4.0 M2 Relea ...
- 固件 android3.0,华为Ascend P7 EMUI3.0 官方固件-资源-持续更新(2.2更新)
本帖最后由 琼霄舞风云 于 2015-2-5 10:28 编辑 华为Ascend P7 EMUI3.0 官方固件 为了方便大家下载最新固件,小编特此整理本帖(本贴持续更新) 刷机方法参考该贴: 文件校 ...
- exure9 秘钥_AxureRP9.0秘钥(持续更新)
Axure RP 9.0.0.3717-3719 正式版 Axure Enterprise Edition Licensee :Freecrackdownload.com KEY:5vYpJgQZ43 ...
- php.ini配置文件详解(mac nginx1.8.0 php5.6 )持续更新中
软硬件环境 mac ox10.11 nginx1.8.0 php5.6 不了解的部分 ;;;;;;;;;;;;;;;;;;;; ; php.ini Options ; ;;;;;;;;;;;;;;;; ...
- AutoJS4.1.0实战教程 ---火热持续更新中
序章 AutoJs4.1.0 基本介绍 https://blog.csdn.net/zy0412326/article/details/105111820 AutoJs4.1.0 元素层次分析. ht ...
- netty4.0源码解析(持续更新)
文章目录 netty 1:环境配置 与其他对比 future缺陷 2:结构 3:设计模式 delay 策略模式 todo 责任链模式 todo 单例模式模式 todo 装饰者模式 ReplayingD ...
- Android 7.0 的改动(持续更新)
今天Google提供了Android 7.0正式版的推送,那么Android 7.0到底有哪些改动和特点呢,下面我将根据自己查阅的资料做一个笔记,主要是记录对我个人来说比较有感觉的改动. Androi ...
- Linux游戏0 A.D.操作说明(持续更新中)
功能 操作 切换为窗口 Ctrl+Enter 打开/关闭提示 Ctrl+P 建筑 作用 城镇中心可以制造农民和士兵 磨坊,用来存储食物,以及开发相关科技 民房,用来提供人口上限,和城镇中心一样可以制造 ...
- 【华为AI比赛】广告信息流跨域CTR预估(持续更新)
学习总结 暂时只是简单提交baseline,提交catboost后的线上成绩为0.71左右,持续更新本贴. 文章目录 学习总结 一.赛题解读 1.1 CTR赛题 1.2 比赛评估指标 1.3 比赛数据 ...
- pip更新失败_最全Tensorflow2.0 入门教程持续更新
最全Tensorflow 2.0 入门教程持续更新: Doit:最全Tensorflow 2.0 入门教程持续更新zhuanlan.zhihu.com 完整tensorflow2.0教程代码请看ht ...
最新文章
- 使用C#格式化字符串 1
- thymeleaf中的模板布局
- order by 空值排在最后_当梅根·马克尔最后一次皇室活动选择选择翡翠绿时证明她非常时髦...
- 史上最快的拼接字串方法
- 制作wordpress页面的学习记录
- tomcat端口被占用-----windows下如何查询某个端口被哪个进程占用以及如何杀死进程
- linux下的各种shell介绍(bash和dash转换)
- 韩企全球首造72层3D NAND芯片 下半年或量产
- 基于Windows8与Visual Studio2012开发内核隐藏注册表
- python银行排队系统_python-我需要基于Web的系统的消息/排队解决...
- Spring 事务模型
- 常用的锂电池充电IC芯片
- msyql数据库[云图智联]
- 【实习周报】2019年5月 前端开发实习工作周报汇总
- oracle dbms_lob trim,DBMS_LOB包基础应用
- Structure of Heap
- 自己写操作系统学习总结
- 帕金森病会引起哪些并发症
- 学生网页课程设计期末作业 HTML+CSS+JavaScript甜品蛋糕网页设计(5页)
- 研发效能双周报 10 月 vol.2 | 两份技术前瞻,哪些新技术将助力效能提升?
热门文章
- c++ 调用程序接口_添加系统调用(返回文件信息)
- Mysql外键的变种 三种关系
- Latex 常用代码
- apache server和tomcat集群配置一:水平负载
- MYSQL数据丢失讨论
- c语言不用临时变量交换两个数程序分析
- 明天发布一个基于Silverlight的类Visio小型绘图工具项目。
- Nginx之11吸星大法 - (页面缓存)
- Python标准库学习笔记7:数据持久存储与交换
- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介 - [SAP]