给定一个整数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. 微软宣布 Power Fx 开源
  2. windows自带反编译chm文件
  3. codeblock 显示 no such file(头文件)
  4. 【数据结构与算法】之深入解析“四数之和”的求解思路与算法示例
  5. 网络与IO知识扫盲(五):从 NIO 到多路复用器
  6. Linux 系统服务管理和控制程序(初始化系统/Init System) -- systemd 介绍
  7. 王道计算机组成原理 物理层整理 超详细版
  8. asp 开发app_ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式
  9. 用 :focus-within 实现纯 CSS 下拉框组件
  10. ThinkPHP如果表名有下划线需要用Model应该怎么做?
  11. Word里的数学符号在哪里
  12. CADD课程学习(8)-- 化合物库虚拟筛选(Virtual Screening)
  13. 酷比魔方iwork1x i30双系统版,重装单Ubuntu 20.04系统记录(重力传感器、触摸屏、启动菜单、声卡问题、优化充电慢)
  14. Vue+ElementUI+Tabs实现选项卡|标签页|美化标签页面|局部替换样式|好看的标签页|选项卡
  15. 计算机二级题百度云,计算机二级office题库
  16. 英文字母字符简便替换法
  17. 快速渡河(贪心算法)
  18. FAST-LIO2.0代码解析(二)preprocess.cpp
  19. 防疫新装备友倍康血氧仪
  20. Winform下ToolStrip承载自定义控件或 Windows 窗体控件。

热门文章

  1. 滑动窗口有关的算法面试题
  2. 组合数学(4)——拉丁方矩阵
  3. 输出斐波拉契数列前30项,每行5个
  4. 【毕业设计】机器学习的员工离职模型研究-python
  5. python学习入门(一)
  6. Ext JS从零开始之二
  7. C# dynamic是什么
  8. 【VMware】在VMware ESXi 6.7中创建虚拟机
  9. 【风变编程】第五课笔记
  10. USB数据线厂家加工生产流程