题目:有m个钱币,有两种价值(xi,yi),现在要求组成面值sum(x)^2+sum(y)^2=s^2的最少硬币数。

分析:dp,二维安全背包。和以为背包相同,只是容量现在是二维的,按递增序枚举两个容量即可;

求解时,枚举所有x^2+y^2=s^2的x和y,取最小即可。

说明:最近开始练习dp(⊙_⊙)。

#include <iostream>
#include <cstdlib>
#include <cstdio>using namespace std;int x[42],y[42];
int dp[302][302];int main()
{int n,m,s;while (cin >> n)while (n --) {cin >> m >> s;for (int i = 0 ; i <= s ; ++ i)for (int j = 0 ; j <= s ; ++ j)dp[i][j] = 100000; for (int i = 1 ; i <= m ; ++ i) {cin >> x[i] >> y[i];dp[x[i]][y[i]] = 1;}for (int i = 1 ; i <= m ; ++ i)for (int j = x[i] ; j <= s ; ++ j)for (int k = y[i] ; k <= s ; ++ k)if (dp[j][k] > dp[j-x[i]][k-y[i]]+1)dp[j][k] = dp[j-x[i]][k-y[i]]+1;int max = 100000;for (int i = 0 ; i <= s ; ++ i)for (int j = 0 ; j <= s ; ++ j)if (i*i+j*j == s*s && max > dp[i][j])max = dp[i][j];if (max == 100000)printf("not possible\n");else printf("%d\n",max);}return 0;
}

UVa 10306 - e-Coins相关推荐

  1. UVA 10306 e-Coins(全然背包: 二维限制条件)

    UVA 10306 e-Coins(全然背包: 二维限制条件) http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...

  2. UVA 10306 e-Coins (二维背包)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  3. uva 10306 e-Coin

    原题: At the Department for Bills and Coins, an extension of today's monetary system has newly been pr ...

  4. UVA - 10306 e-Coins

    题目大意:给出m和s, 再给出m种电子硬币,每种硬币有两种金额xi,yi.现在要在m种硬币种选若干个硬币,可以重复选同一种硬币, 使得(x1 + x2 + .... + xn) ^ 2 + (y1 + ...

  5. uva 10306(完全背包)

    题意:有m种硬币和目标值s,如果能最少拿k个可以让拿出的硬币的x的和和y的和的平方和等于s的平方,输出k. 题解:完全背包问题,f[i][j]代表当硬币的x和y分别为i和j时最少共有多少个硬币组成,然 ...

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

    题意:e-coin有两个价值x,y,现在给你一个价值n,给你几种e-coin,问你能否用最小的e-coin数得到所求的价值n*n=(x1+x2+...xn)^2+(y1+y2+...yn)^2. 思路 ...

  7. uva 10306 e-coins【dp】

    二维完全背包 #include <bits/stdc++.h> #define cl(a) memset(a,0,sizeof(a)) #define rep(i,a,b) for(int ...

  8. UVa 10306. e-Coins

    题意为有m个向量,将任意个向量相加使得距离刚好为s,求向量的最小个数. 看题后的第一想法是用广搜+dp,后来提交代码却RE了(应该不会的).后来用枚举试了一下,还是RE.所以才想到是不是数组开小了一点 ...

  9. uva 10306 简单DP

    题意: 给n种硬币和一个面值s. 每种硬币有两种价值,并且有无限个,求能满足第一种价值i * i + j * j = s * s的最少硬币数. 解析: 先dp出每种情况下i,j用的最少银币,然后暴力搞 ...

最新文章

  1. combobox 怎么实现对listview的类别查询_通过 Django Pagination 实现简单分页
  2. windows云服务器价格_服务器windows2008价格
  3. Spring Cloud Security:Oauth2结合JWT使用
  4. mac 环境变量设置
  5. 从零开始,做一个NodeJS博客(四):服务器渲染页面与Pjax
  6. objectdatasouce的温故
  7. 27岁后月薪低于8K,会被淘汰吗?
  8. Spring MVC 中集成 Apache Shiro 安全框架
  9. 稀疏矩阵计算器(三元组实现矩阵加减乘法)
  10. DataStore的基础用法
  11. 关于数据库可变长字符串类型长度设计问题:慷慨是不明智的
  12. spider_study 1
  13. 1072 开学寄语 Python实现
  14. 编写一个程序,完成字符大小写的转换。
  15. 入职百度第二周,我知道了这些
  16. 书记员计算机操作基础知识考试,书记员打字考试怎么考?有哪些形式?
  17. Nodejs内存溢出原因
  18. 70个JavaScript面试问题
  19. MailKit和MimeKit 收发邮件
  20. 【RocketMQ】 官方运维管理命令mqadmin使用手册(讲解+实操)

热门文章

  1. 组件化拆分(三)-Todos案例——单页面-详细代码
  2. 上海房产中介面临倒闭潮
  3. 如何显示文件夹的后缀和隐藏文件
  4. VM虚拟机安装CentOS7系统后连接不上网络的问题(service netword restart)重启网卡和重置网络编译器
  5. 婚恋交友APP投快手信息流广告怎么收费的,婚恋交友APP快手短视频推广怎么做的,快手开户代运营返点多少
  6. 4 HQL操作之 -- DDL命令
  7. 十款免费的Web前端开发工具
  8. ArcGIS Engine环境下VS窗体与Unity虚拟现实地理空间的嵌套和交互
  9. 实战技法 - 短线操盘 (1)
  10. 使用mac 终端登录腾讯云服务器