题目大意:我们的朋友Bob要结婚了,所以要为他买一些衣服。有m的资金预算,要买c种类型的衣服(衬衫、裤子等),而每种类型的衣服有k个选择(只能做出一个选择),每个选择的衣服都有一个价格,问如何选择才能使花费控制在预算范围内并使得花费尽量大?输出最大花费。

  用dp进行解决,bool dp[i][j]用以表明在买完第i种类型的衣服后是否可能有j的资金剩余。递推至dp[c][],找出dp[c][]中最小的资金剩余。

 #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; struct Garment
{
int size;
int model[];
} garment[];
bool dp[][]; int main()
{
#ifdef LOCAL
freopen("in", "r", stdin);
#endif
int T;
scanf("%d", &T);
while (T--)
{
int m, c;
scanf("%d%d", &m, &c);
for (int i = ; i <= c; i++)
{
scanf("%d", &garment[i].size);
for (int j = ; j < garment[i].size; j++)
scanf("%d", &garment[i].model[j]);
sort(garment[i].model, garment[i].model+garment[i].size);
}
int lowest = ;
for (int i = ; i <= c; i++)
lowest += garment[i].model[];
if (lowest > m)
{
printf("no solution\n");
continue;
}
memset(dp, , sizeof(dp));
dp[][m] = ;
for (int i = ; i <= c; i++)
{
for (int j = ; j <= m; j++)
if (dp[i-][j])
{
for (int p = ; p < garment[i].size; p++)
if (j - garment[i].model[p] >= )
dp[i][j-garment[i].model[p]] = ;
}
}
int p = ;
while (!dp[c][p]) p++;
printf("%d\n", m-p);
}
return ;
}

  开始是把数据保存在garment[0...c-1]中,后来改为garment[1...c],却忘了在计算lowest时进行修改,WA了一次,以后记得修改完东西后检查一下是否对其他地方有影响,不要简单地依靠样例给的测试数据。

最新文章

  1. phabricator-zh_CN汉化包
  2. JQuery中Ajax的操作
  3. 介绍对称加密的另一个算法——PBE
  4. 使用JCIFS获取远程共享文件
  5. Yii2.0中form-&gt;field如何获取主表的一个字段并且设置为只读
  6. 4197: [Noi2015]寿司晚宴
  7. 【转】AVL
  8. mysql 常用语法
  9. 关于MySQL MyISAM 表并发
  10. AWS ec2 vpn 搭建(20161014更新http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm)
  11. Mac本地编辑服务器代码
  12. 一:Redis的7个应用场景
  13. hackathon活动复盘
  14. 为什么MIP-Cache存在
  15. Storm UI说明
  16. JavaScript 原型链学习(四)原型链的基本概念、原型链实现继承
  17. CSS margin属性与用法教程
  18. 使用对象作为hashMap的键,需要覆盖hashcode和equals方法
  19. Nginx内置的嵌入变量
  20. 批处理学习笔记11 - del命令和rd命令

热门文章

  1. android经典开源代码集合
  2. java dom4j解析xml实例(2)
  3. JAVA实现二进制,十六进制输出
  4. 兼容性,float
  5. Xamarin For Visual Studio 3.0.54.0 完整离线破解版
  6. 解决adb command not found以及sdk环境配置
  7. 如何把mysql的ID归0?
  8. MVC和三层架构的区别
  9. base库插件---form
  10. [Unity]C#.数据类型总结