给定一个整数n(200)和n个数(40).
要求将这些数分组,使得个数最多差1且数字和最接近.

做法很多,这里列举一种
题意要求从n个数中选择n/2个,并使得和与总和的一半最为接近.
状态表示:可以用dp[i][j]表示选择了i个数时和为j的情况是否存在.
边界条件:dp[0][0]=1.
状态表示:dp[i][j]|=dp[i-1][j-save[k]]
复杂度(200*100*200*40)约为(2e8)???
最近几题的复杂度都这么凶险的吗

结果表示:
从dp[n/2][]中搜索,找到dp[n/2][j]为1且j距离sum/2最近的

代码是经典的三段dp:
1.读入/预处理
2.dp
3.输出结果

关于dp环节有几点:
1.需要倒转方向,因为经过了空间优化且每个物品只有一件
2.不用dp到0,因为本题中有个数i的限制.

最后的输出环节:
注意了,主要的复杂度都在dp上,所以dp部分以效率为主.
但是输出环节复杂度不会超过8000,所以应该以易读为主,不要想什么神奇操作,他让干什么就干什么就最好,比如本题中,直接选取两者差最小的就行.

const int N = 128, V = 8096;
int save[N];
int dp[N][V];int n=read(),sum=0;for(int i=1;i<=n;i++)sum+=(save[i]=read());dp[0][0]=1;for(int k=1;k<=n;k++)for(int i=min(n/2,k);i>=1;i--)for(int j=min(k*40,sum);j>=save[k];j--)dp[i][j]|=dp[i-1][j-save[k]];int ans=0;for(int j=0;j<=sum;j++)if(dp[n/2][j]&&abs(j*2-sum)<abs(ans*2-sum))ans=min(j,sum-j);printf("%d %d\n",ans,sum-ans );

dp训练第27题 vijos1153 猫狗大战 背包相关推荐

  1. dp训练第25题 vijos 1059 积木城堡 背包

    给定n(100)个数字集合,每个集合最多由100个小于等于100的数从小到大排列而成(不重复). 现在要将每个集合中可以删去一些数,使得各个集合的数字和相等,若有多解取和最大的.无解输出-1. 背包题 ...

  2. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  3. 7月29日dp训练总结

    7 7 7 月 29 29 29 日 d p dp dp 训练总结 时间安排 考试时间:8点到10点20 8 : 00 ∼ 8 : 20 8:00\sim8:20 8:00∼8:20 : 把题目通读一 ...

  4. 爆炸的符卡洋洋洒洒<每日一题>(01背包变种)

    题目: 题目链接:登录-专业IT笔试面试备考平台_牛客网 思路: 该题为01背包的变种问题 我们先来复习一下普通的01背包 dp[i][j]数组的含义: i代表了取前i个物品 j代表了背包的空间 数组 ...

  5. 林大5.1训练赛补题

    林大5.1训练赛补题 A.凸多边形曼哈顿 E.矩阵快速幂 I.线段dp A.凸多边形曼哈顿 题意:给你一个凸多边形,问你当其中K边形的最大dis[]是多少? 思路:首先是要发现K>=4的时候答案 ...

  6. 中级人工智能训练师认证题库

     2022年最新版中级人工智能训练师认证题库 作为做运营喵的你是否还在为拿不到阿里认证证书烦恼呢?小编而为你排忧解难,亲手试水的呕心整理的题库奉上, ,愿小伙伴们都能顺利拿到证书~~升职加薪,走向人生 ...

  7. 第十四届蓝桥杯三月真题刷题训练——第 27 天

    目录 第 1题:数学考试_前缀和 代码: 第 2 题:地标访问_二分 题目背景 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码: 第 1题:数学考试_前缀和 代码: package 第十 ...

  8. 【长更】一句话题解(组队训练的俄罗斯题、oj、camp)

      还是太长了,第二次分裂..   标 * 的为有价值的题,标 ^ 的为欺诈题,标 - 的为知识点待填坑,标 ? 的表示看别人是这样做的但是没懂为什么   组队训练的题,如果是队友过的板刷题,题面又很 ...

  9. dp训练 4月5日 第四天结 动态规划入门完成

    这四天一共做了12道有关dp的题,其中十道训练计划中的题,两道是团队训练时遇到的dp题. 十道训练题全部来自于syl的小学期dp课程,包括 两道新手背包题(01背包,01背包满包) 一道区间dp题(括 ...

最新文章

  1. APACHE多个服务器的配置
  2. 关于数学里的一些知识
  3. 用final修饰的HashMap,到底可不可以修改??
  4. 千难万险 —— goroutine 从生到死(六)
  5. java本地监听zk服务器节点【动态上下线】
  6. 微信小程序入门四:实现table效果
  7. [转]学习c++的50条忠告
  8. android应用开发(25)---进程和应用程序生命周期
  9. PKU/POJ 2054 Color a Tree
  10. spring aop和事务同时开启带来的一些问题
  11. 超全!体验度量理论2021版
  12. FILecoin 将重大战略升级,FIL 或将引导商业数据
  13. Windows共享Linux打印机,Ubuntu使用教程-使用Windows共享打印机进行打印
  14. ▼ 系列 | 漫谈数仓第四篇NO.4 『BI选型』
  15. html美食网站源码
  16. Win11新电脑开机怎么跳过登录microsoft账户?
  17. 你了解净水器滤芯知识多少?
  18. Speex Acoustic Echo Cancellation (AEC) 回声消除模块的使用
  19. 枪战英雄啥时候服务器维护结束,【公告】《枪战英雄》7月13日停服更新公告
  20. windows 符号服务器被墙了

热门文章

  1. Lib库使用学习笔记
  2. spring集成kafka运行时报错:Failed to construct kafka producer] with root cause
  3. oracle 错误实例分析(ORA-01078)
  4. 2021-07-07 - 使用脚本批量下载网页视频[如哔哩哔哩] - 学习/实践
  5. SIGCOMM‘2021 Congestion Detection in Lossless Networks 阅读笔记
  6. jquery触发键盘按下事件
  7. 计算机限制打开移动硬盘,移动硬盘一接到电脑上就显示“一个USB设备超过其集线器端口的电源限制”...
  8. 电子词典 C语言实现
  9. 计算机专业感悟英语,学习计算机专业英语心得体会.docx
  10. 庆祝自己喜提ROG冰刃3新锐!