luogu1064 金明的预算方案
这道题我就想说一点:审题!附件只有2个!钱是10的整数倍,不是100的整数倍!
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int MAX_OBJ = 60, MAX_V = 5000, MINF = 0xcfcfcfcf;
int ObjCnt[MAX_OBJ], V[MAX_OBJ][5], W[MAX_OBJ][5];
int F[MAX_V];
int TotV, TotObj; int Dp()
{
memset(F, MINF, sizeof(F));
F[0] = 0;
for (int i = 1; i <= TotObj; i++)
for (int j = TotV; j >= 0; j--)
for (int k = 1; k <= ObjCnt[i]; k++)
if (V[i][k] <= j)
F[j] = max(F[j], F[j - V[i][k]] + W[i][k]);
int ans = 0;
for (int j = 1; j <= TotV; j++)
ans = max(ans, F[j]);
return ans;
} int main()
{
scanf("%d%d", &TotV, &TotObj);
for (int i = 1; i <= TotObj; i++)
ObjCnt[i] = 1;
TotV /= 10;
for (int i = 1; i <= TotObj; i++)
{
int v, w, group;
scanf("%d%d%d", &v, &w, &group);
v /= 10;
if (group == 0)
{
V[i][1] = v;
W[i][1] = w * v;
}
else
{
ObjCnt[group]++;
V[group][ObjCnt[group]] = v;
W[group][ObjCnt[group]] = w * v;
}
}
for (int i = 1; i <= TotObj; i++)
{
if (ObjCnt[i] == 1 && !V[i][1])
ObjCnt[i] = 0;
else if (ObjCnt[i] == 2)
{
V[i][2] += V[i][1];
W[i][2] += W[i][1];
}
else if (ObjCnt[i] == 3)
{
ObjCnt[i]++;
V[i][4] = V[i][1] + V[i][2] + V[i][3];
W[i][4] = W[i][1] + W[i][2] + W[i][3];
V[i][2] += V[i][1];
W[i][2] += W[i][1];
V[i][3] += V[i][1];
W[i][3] += W[i][1];
}
}
printf("%d\n", Dp() * 10);
return 0;
}
luogu1064 金明的预算方案的更多相关文章
- Luogu1064 金明的预算方案 (有依赖的背包)
枚举多个状态 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...
- [codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案
[codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案 试题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴 ...
- NOIP2006 金明的预算方案
1. 金明的预算方案 (budget.pas/c/cpp) [问题描述] 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈 ...
- 动态规划(背包问题):HRBUST 1377 金明的预算方案
金明的预算方案 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行 ...
- Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划)
Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划) Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己 ...
- [LuoguP1064][Noip2006]金明的预算方案
金明的预算方案(Link) 题目描述 现在有\(M\)个物品,每一个物品有一个钱数和重要度,并且有一个\(Q\),如果\(Q = 0\),那么该物件可以单独购买,当\(Q != 0\)时,表示若要购买 ...
- 算法笔记_103:蓝桥杯练习 算法提高 金明的预算方案(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些 ...
- tyvj 1057 金明的预算方案 背包dp
P1057 金明的预算方案 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2006 提高组 第二道 描述 金明今天很开心,家里购置的新房就要领钥匙了 ...
- 【洛谷P1064】[NOIP2006] 金明的预算方案
金明的预算方案 显然是个背包问题 把每个主件和它对应的附件放在一组,枚举每一组,有以下几种选法: 1.都不选 2.只选主件 3.一个主件+一个附件 4.一个主件+两个附件 于是就成了01背包.. #i ...
随机推荐
- 研磨JavaScript系列(二):没有类
object就是对象的类型.在JavaScript中不管多么复杂的数据和代码.都可以组织成object形式的对象. 但JavaScript没有"类"概念. 看下面这段JavaScr ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...
- Android HTTP 数据提交
在Android 项目中,使用HTTP协议获取数据或者处理数据,需要使用到多线程和配置相应的APP权限 1.使用线程,使用HTTP 提交数据 private Thread submitThread = ...
- 00-SQLite的SQL语法
SQLite的SQL语法 SQLite库可以解析大部分标准SQL语言.但它也省去了一些特性并且加入了一些自己的新特性.这篇文档就是试图描述那些SQLite支持/不支持的SQL语法的.查看关键字列表. ...
- JS高级——歌曲管理
1.将歌曲管理的CURD方法放到原型中 2.在构造函数中,我们只有一个属性是songList,因为音乐库不是共有的,如果将songList放入原型中,任何一个人的一次修改songList,都将把son ...
- Django 更新字段
Django在1.7以后的版本提供数据迁移命令,用来在修改模型中的字段,更新到数据库 1. python manager.py makemigrations 命令用来创建迁移文件版本的 2. pyth ...
- kswapd和pdflush
首 先,它们存在的目的不同,kswap的作用是管理内存,pdflush的作用是同步内存和磁盘,当然因为数据写入磁盘前可能会换存在内存,这些缓存真正写 入磁盘由三个原因趋势:1.用户要求缓存马上写入磁盘 ...
- js的StringBuffer类
function StringBuffer(str){ var arr = []; str = str || ""; arr.push(str); this.append = fu ...
- java 导入导出的 命令
$exp lddba/ld_321@192.168.1.3/testora file=E:\db_bak\ld20170219_1testora.dmp log=E:\db_bak\ld2017021 ...
- Spring MVC 笔记2 HelloWorld
实现这个例子的问题 WEB-INFO目录下必须有spring的包,放在lib下:如下图(这里我直接把idea创建时宣称springmvc,然后把idea给的lib拷贝了下来,也可以的) request ...