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 ...
随机推荐
- css文本背景样式
文本样式 文本类 text-transform:uppercase: 全部变为大写 text-transform:lowercase: 全部变为小写 text-transform:capitalize ...
- CSS——盒子
CSS中的盒子具有以下几个种重要的属性: 1.border(边框) :盒子的厚度 2.padding(内边距):盒子内容距离盒子边框的距离 3.margin(外边距):盒子边框与其他的盒子的距离
- 几种fullpage用法及demo
jQuery全屏滚动插件fullPage.js https://github.com/alvarotrigo/fullPage.js http://www.dowebok.com/77.html 全屏 ...
- seam的定时轮巡
青岛的项目要做一个功能,每天凌晨2点的时候保存一次设备数据,这个就要求项目能够间隔24小时每天去做这个事,是一个自主轮巡. seam框架正好提供了这个功能,@Expiration指定开始时间,@Int ...
- Appium 使用android_uiautomator定位元素时报错: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource
使用 android_uiautomator 定位元素时(现在用的还不太熟,对于这个方法还需要加深了解)报错: 报错信息:The requested resource could not be fou ...
- 在Unity中对注册表的信息进行操作
问题1 在对注册表进行操作时无法生成注册表相关的类 解决办法: 增加头文件using Microsft.Win32; 问题2 在运行程序时报错同时注 ...
- Oracle 【基 本 操 作】
1.日期时间 select SYSDATE from DUAl; select TO_CHAR(SYSDATE, 'YYYY-MM-DD') from DUAL; select TO_CHAR(SYS ...
- dp有哪些种类
dp有哪些种类 一.总结 一句话总结: 二.dp动态规划分类详解 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力.建模抽象能力.灵活度. * ...
- [CodeForces] 274E Mirror Room
题意翻译 有一个n*m的格子图,其中有一些是黑色的,另一些为白色. 从某个白色格子的中心点向左上(NW),左下(SW),右上(NE),右下(SE)四个方向中的一个发出一束光线,若光线碰到黑色格子或者墙 ...
- SGU180 Inversions(树状数组求逆序数)
题目: 思路:先离散化数据然后树状数组搞一下求逆序数. 离散化的方法:https://blog.csdn.net/gokou_ruri/article/details/7723378 自己对用树状数组 ...