题意:有n个物品,每个物品有两种价值x, y,每个物品的个数不限,求出(x1 + x2 + ...)^2 + (y1 + y2 + ...) ^2 == S ^ 2

思路:二维完全背包,因为物品个数不限。d[i][j]表示的是能选到的x的和为i,y的和为j时,选择的物品个数最少。 总的价值S为背包的容量,物品的个数为价值。

状态转移方程:d[v1][v2] = min(d[v1][v2], d[v1 - w1[i]][v2 - w2[i]] + 1);

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;const int INF = 0x3f3f3f3f;
const int MAXN = 1005;int d[MAXN][MAXN], w1[MAXN], w2[MAXN];
int n, S;int dp() {for (int i = 0; i < n; i++)for (int v1 = w1[i]; v1 <= S; v1++) for (int v2 = w2[i]; v2 <= S; v2++) if (d[v1 - w1[i]][v2 - w2[i]] != INF) d[v1][v2] = min(d[v1][v2], d[v1 - w1[i]][v2 - w2[i]] + 1); int ans = INF; int temp = S * S;for (int i = 0; i <= S; i++)for (int j = 0; j <= S; j++) if (i * i + j * j == temp && d[i][j] != INF) if (ans > d[i][j])ans = d[i][j];        return ans;
}int main() {int cas;scanf("%d", &cas);while (cas--) {scanf("%d %d", &n, &S);    for (int i = 0; i < n; i++)scanf("%d %d", &w1[i], &w2[i]);for (int i = 0; i <= S; i++)for (int j = 0; j <= S; j++)d[i][j] = INF;d[0][0] = 0;int num = dp();if (num != INF)printf("%d\n", num);elseprintf("not possible\n");}return 0;
}

UVA10306 - e-Coins(二维完全背包)相关推荐

  1. 背包模型dp2之二维费用背包

    二维费用背包 状态表示:f[i][j][k]所有只从前i个物体中选,并且总体积不超过j,总重量不超过k的选法状态表示:f[i][j][k]所有只从前i个物体中选,并且总体积不超过j,总重量不超过k的选 ...

  2. HDU 2159 FATE【二维完全背包】

    题目链接:https://vjudge.net/problem/HDU-2159 FATE                                                       ...

  3. 【洛谷 - P1507 】NASA的食物计划(二维费用背包,dp)

    题干: 题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证,在遇到这类航天问题时, ...

  4. UVA 10306 e-Coins(二维完全背包)

    题意: 有n种物品,每种物品有两种价值x和y,并且每种物品的个数不限,求(x1 + x2 + -)^2 + (y1 + y2 + -) ^2 == S ^ 2 思路: 因为每种物品任意个,所以是二维完 ...

  5. 一本通 1271:【例9.15】潜水员(二维费用背包)

    [题目描述] 潜水员为了潜水要使用特殊的装备.他有一个带2种气体的气缸:一个为氧气,一个为氮气.让潜水员下潜的深度需要各种的数量的氧和氮.潜水员有一定数量的气缸.每个气缸都有重量和气体容量.潜水员为了 ...

  6. 【python】一篇讲透背包问题(01背包 完全背包 多重背包 二维费用背包)

    面对背包问题,有一个很重要的方程式:状态转移方程式 所以每一种背包问题我都会给出状态转移方程式 #01背包 什么是01背包型问题? 先给大家感受一下01背包型问题: 给定n种物品和一背包.物品i的重量 ...

  7. AcWing 1020. 潜水员(二维费用背包)

    一.问题 二.思路 这道题其实很容易看出是一个二维费用背包的变形,如果我们将氧气看作体积,将氮气看作价值的话,这道题就变成了从 i i i个物品里面选,体积至少为 m m m,价值至少为 n n n的 ...

  8. 一和零(二维01背包)

    给你一个二进制字符串数组 strs 和两个整数 m 和 n . 请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1 . 如果 x 的所有元素也是 y 的元素,集 ...

  9. 动态规划:二维费用背包

    顾名思义,二维费用的背包中的每种物品有两种费用 设f[i][v][u]表示前i件物品付出两种代价分别为v和u时可获得的最大价值 那么我们很容易给出状态转移方程,加一维状态即可 f[i][v][u]=m ...

最新文章

  1. hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
  2. 【Python】编程笔记9
  3. python数据读取失败无法启动应用_tensorflow初学者教程-读取数据集失败
  4. Ubuntu远程操作Linux服务器GUI程序
  5. SWF 文件不能访问本地资源 只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源。...
  6. edward_mj退役经验帖
  7. gcc编译器的整个工作过程
  8. 在 Mac OS X Lion 下修改 Hosts 的四种方法
  9. mysql数据库内置函数大全_(MariaDB)MySQL内置函数大全
  10. python中np没有定义_第六篇:python中numpy.zeros(np.zeros)的使用方法
  11. IDEA导出jar包步骤
  12. OpenGL glut导入OBJ模型文件
  13. Gerrit 工作流程及简单使用
  14. 线代:1.7矩阵对角化二次型
  15. 3. 几何图形(Geometry)
  16. win10点一个程序要很久才响应解决方法
  17. 创新战略|工业企业如何应对颠覆式变革带来的挑战?
  18. CSS 图片浮动导致页面无垂直拓展
  19. 故障管理:故障定级和定责
  20. 英特尔10纳米Agilex FPGA核心技术全解读

热门文章

  1. 关于Win10和win7下输出txt文件的换行问题
  2. 从0开始搭建Hadoop2.x高可用集群(HDFS篇)
  3. 腾讯云轻量应用服务器搭建即时通信 IM系统
  4. 【数据结构和算法】图论—最小生成树,普里姆算法(Prim)
  5. Docker自动化部署安装(五)之安装portainer-docker容器管理工具
  6. 【安全】Shellshock漏洞
  7. Spring Boot使用qq邮箱实现验证码发送
  8. c语言井字棋程序设计报告,井字棋游戏(课程设计)总结报告.doc
  9. LeetCode通关:哈希表六连,这个还真有点简单
  10. alt在计算机中代表什么,计算机中alt+enter是什么快捷键