POJ 1170 Shopping Offers(完全背包+哈希)
http://poj.org/problem?id=1170
题意:
有n种花的数量和价格,以及m种套餐买法(套餐会便宜些),问最少要花多少钱。
思路:
题目是完全背包,但这道题目不好处理的是套餐的状态,因为数量最多只有5,所有可以用6进制来记录状态。
最后的话就是一个完全背包啦~
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<sstream>
#include<vector>
#include<stack>
#include<queue>
#include<cmath>
#include<map>
#include<set>
using namespace std;
typedef long long ll;
typedef pair<int,int> pll;
const int INF = 0x3f3f3f3f;
const int maxn = 1e4 + ; int n, m;
int v; struct node
{
int code, st, num, price;
}a[maxn]; map<int,int> ID; int d[maxn]; int main()
{
//freopen("in.txt","r",stdin);
while(~scanf("%d",&n))
{
v=;
ID.clear(); for(int i=;i<n;i++)
{
scanf("%d%d%d",&a[i].code,&a[i].num,&a[i].price);
a[i].st=pow(6.0,(double)i);
v+=a[i].st*a[i].num;
ID[a[i].code]=i;
} scanf("%d",&m);
for(int i=;i<m;i++)
{
int t;
scanf("%d",&t);
a[i+n].st=;
while(t--)
{
int code, num;
scanf("%d%d",&code,&num);
if(ID.find(code)==ID.end()) continue;
a[i+n].st+=a[ID[code]].st*num;
}
scanf("%d",&a[i+n].price);
} for(int i=;i<=v;i++)
d[i]=INF;
d[]=; for(int i=;i<n+m;i++)
{
for(int j=a[i].st;j<=v;j++)
{
d[j]=min(d[j],d[j-a[i].st]+a[i].price);
}
}
printf("%d\n",d[v]);
}
return ;
}
POJ 1170 Shopping Offers(完全背包+哈希)的更多相关文章
- 背包系列练习及总结(hud 2602 && hdu 2844 Coins && hdu 2159 && poj 1170 Shopping Offers && hdu 3092 Least common multiple && poj 1015 Jury Compromise)
作为一个oier,以及大学acm党背包是必不可少的一部分.好久没做背包类动规了.久违地练习下-.- dd__engi的背包九讲:http://love-oriented.com/pack/ 鸣谢htt ...
- poj 1170 Shopping Offers
Shopping Offers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4696 Accepted: 1967 D ...
- POJ 1170 Shopping Offers非状态压缩做法
Shopping Offers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5659 Accepted: 2361 Descr ...
- POJ 1170 Shopping Offers -- 动态规划(虐心的六重循环啊!!!)
题目地址:http://poj.org/problem?id=1170 Description In a shop each kind of product has a price. For exam ...
- poj - 1170 - Shopping Offers(减少国家dp)
意甲冠军:b(0 <= b <= 5)商品的种类,每个人都有一个标签c(1 <= c <= 999),有需要购买若干k(1 <= k <=5),有一个单价p(1 & ...
- POJ - 1170 Shopping Offers (五维DP)
题目大意:有一个人要买b件商品,给出每件商品的编号,价格和数量,恰逢商店打折.有s种打折方式.问怎么才干使买的价格达到最低 解题思路:最多仅仅有五种商品.且每件商品最多仅仅有5个,所以能够用5维dp来 ...
- HDU 1170 Shopping Offers 离散+状态压缩+完全背包
题目链接: http://poj.org/problem?id=1170 Shopping Offers Time Limit: 1000MSMemory Limit: 10000K 问题描述 In ...
- 洛谷P2732 商店购物 Shopping Offers
P2732 商店购物 Shopping Offers 23通过 41提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目背景 在商店中, ...
- USACO 3.3 Shopping Offers
Shopping OffersIOI'95 In a certain shop, each kind of product has an integer price. For example, the ...
随机推荐
- 【BZOJ3932】[CQOI2015]任务查询系统 主席树
[BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...
- iOS tableview上放textfield
用UITableViewController就可以了,处理键盘弹出和消失的代码已经封装在UITableViewController里了.
- Android EditText光标颜色 与inputType
1.EditText有一个属性:android:textCursorDrawable,这个属性是用来控制光标颜色的 android:textCursorDrawable="@null&q ...
- Nexus介绍
转自:https://www.cnblogs.com/wincai/p/5599282.html 开始在使用Maven时,总是会听到nexus这个词,一会儿maven,一会儿nexus,当时很是困惑, ...
- undo文件丢失或损坏
startup mount cp +DATA/ora11g/datafile/undotbs1.dbf alter database rename file '+DATA/ora11g/datafil ...
- Linux 使用 常识记忆
1.当系统突然死机需要重启时,打开 命令输入端口,使用快捷键 Shift +Alt +F(1或6)打开 ,然后输入 shutdown -r now 如果提示shutdown need to be ro ...
- 【node】---multer模块实现图片上传---【巷子】
1.安装muterl第三方模块 cnpm install multer --save 2.使用 multer在解析完成后,会向request对象中添加一个body对象和一个file或者files对象( ...
- 信息收集1:DNSEUM命令
1,背景 今天无意中发现了dnsenum这个工具,在网上搜了下关于dnsenum的介绍和安装使用方法,资料不是很全,但还好这个工具也算简单,网上也都有源码,可以自行下载下来阅读阅读.本人好奇在本机(u ...
- vs 开发常用快捷键
alt+shift+enter 编辑区最大化ctrl+] 括号匹配 ctrl+j 强迫智能感知ctrl+shift+空格 强迫智能感知(参数) ctrl+k+d ...
- android使用library
http://www.vogella.com/tutorials/AndroidLibraryProjects/article.html 介绍support lib使用 http://de ...