这道题我就想说一点:审题!附件只有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 金明的预算方案的更多相关文章

  1. Luogu1064 金明的预算方案 (有依赖的背包)

    枚举多个状态 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...

  2. [codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案

    [codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案 试题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴 ...

  3. NOIP2006 金明的预算方案

    1.             金明的预算方案 (budget.pas/c/cpp) [问题描述] 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈 ...

  4. 动态规划(背包问题):HRBUST 1377 金明的预算方案

    金明的预算方案 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行 ...

  5. Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划)

    Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划) Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己 ...

  6. [LuoguP1064][Noip2006]金明的预算方案

    金明的预算方案(Link) 题目描述 现在有\(M\)个物品,每一个物品有一个钱数和重要度,并且有一个\(Q\),如果\(Q = 0\),那么该物件可以单独购买,当\(Q != 0\)时,表示若要购买 ...

  7. 算法笔记_103:蓝桥杯练习 算法提高 金明的预算方案(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些 ...

  8. tyvj 1057 金明的预算方案 背包dp

    P1057 金明的预算方案 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2006 提高组 第二道 描述 金明今天很开心,家里购置的新房就要领钥匙了 ...

  9. 【洛谷P1064】[NOIP2006] 金明的预算方案

    金明的预算方案 显然是个背包问题 把每个主件和它对应的附件放在一组,枚举每一组,有以下几种选法: 1.都不选 2.只选主件 3.一个主件+一个附件 4.一个主件+两个附件 于是就成了01背包.. #i ...

随机推荐

  1. 元素属性的添加删除(原生js)

    添加属性 odiv.setAttribute("title","hello div!"); odiv.setAttribute("class" ...

  2. 在VirtualBox上安装Solaris 10全教程(包括下载)

    您可以在博文的最下方留下评价, 也可以点击左边的 关注 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐 来支持一下喔 如果您对博文有任何疑问, 可以通过评论或发邮件的 ...

  3. Centos6.7 编译安装 MySQL教程

    Centos6.7 编译安装 MySQL # 安装依赖包 [root@localhost ~]# yum -y install gcc gcc-c++ autoconf* automake* zlib ...

  4. day09-文件的操作

    目录 文件的基本操作 文件 什么是文件 如何使用文件 打开&关闭文件 打开&关闭文件 del f和f.close()的区别 文件路径 打开模式(不写默认是r) 编码格式 补充(open ...

  5. 字符串问题:去掉字符串中连续出现 k 个 0 的子串

    [题目] 给定一个字符串 str 和 一个整数 k, 如果 str 中正好有连续 k 个 ‘0’ 字符出现时,把 k 个连续的 ‘0’ 字符去除,返回处理后的字符串. [举例] str="A ...

  6. 1 Web 知识基础

    一.什么是跨域访问举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容.如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.你可以理解为两个域名之间不能跨过域名来发送请求或者请求 ...

  7. NTP测试1

    ntp server A : 10.101.75.8 B : 10.101.75.38 B: [root@r10n16313.sqa.zmf /home/ahao.mah] #cat /etc/ntp ...

  8. 开发LED屏幕页面遇到的问题

    上上个礼拜公司的展销会活动需要一个展示在LED大屏幕的页面,顶部显示平台交易总金额,左右两边分别是厂家和买家实时交易记录,具体页面长下面这个样子 需求评审的时候产品说顶部的总金额要有一个数字滚动或者翻 ...

  9. JavaScript day4(逻辑运算符)

    逻辑运算符 逻辑运算符用于测定变量或值之间的逻辑 逻辑与运算符:&&.同时满足(and). 通过if语句的嵌套来实现: if (num > 5) { if (num < 1 ...

  10. Gym - 101611D Decoding of Varints(阅读理解题 )

    Decoding of Varints ​ 题意&思路: 首先根据红色边框部分的公式算出x,再有绿色部分得知,如果x是偶数则直接除以2,x是奇数则(x+1)/-2. PS:这题有数据会爆掉un ...