USACO3.32Shopping Offers(DP)
五维DP,听着挺多的,貌似就是挺裸的dp,
最近貌似做简单的DP挺顺手。。1A
dp[i][j][e][o][g] = min(dp[i][j][e][o][g],dp[i-i1][j-i2][e-i3][o-i4][g-i5]+p[q]) i1,i2...为满足给出的商品数量的值 p[q]为选用当前优惠方案的价格。
/*
ID: shangca2
LANG: C++
TASK: shopping
*/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define INF 0xfffffff
int dp[][][][][];
struct node
{
int c[],k[],p,n;
}pp[];
int c[],k[],p[];
int main()
{
freopen("shopping.in","r",stdin);
freopen("shopping.out","w",stdout);
int i,j,s,b,e,o,g,q,a;
for(i = ; i <= ; i++)
for(j = ; j <= ; j++)
for(e = ; e <= ; e++)
for(o = ; o <= ; o++)
for(g = ; g <= ; g++)
dp[i][j][e][o][g] = INF;
cin>>s;
for(i = ; i <= s ; i++)
{
cin>>pp[i].n;
for(j = ; j <= pp[i].n ; j++)
cin>>pp[i].c[j]>>pp[i].k[j];
cin>>pp[i].p;
}
cin>>b;
for(i = ; i <= b ;i++)
cin>>c[i]>>k[i]>>p[i];
for(i = ;i <= k[] ; i++)
for(j = ; j <= k[] ; j++)
for(e = ; e <= k[] ; e++)
for(o = ; o <= k[] ;o++)
for(g = ; g <= k[] ; g++)
{
dp[i][j][e][o][g] = i*p[]+j*p[]+e*p[]+o*p[]+g*p[];
for(q = ; q <= s ; q++)
{
int i1=,i2=,i3=,i4=,i5=;
for(a = ; a <= pp[q].n ;a++)
{
if(pp[q].c[a]==c[])
i1 = pp[q].k[a];
else if(pp[q].c[a]==c[])
i2 = pp[q].k[a];
else if(pp[q].c[a]==c[])
i3 = pp[q].k[a];
else if(pp[q].c[a]==c[])
i4 = pp[q].k[a];
else
i5 = pp[q].k[a];
}
if(i-i1>=&&j-i2>=&&e-i3>=&&o-i4>=&&g-i5>=)
{
dp[i][j][e][o][g] = min(dp[i][j][e][o][g],dp[i-i1][j-i2][e-i3][o-i4][g-i5]+pp[q].p);
}
}
}
cout<<dp[k[]][k[]][k[]][k[]][k[]]<<endl;
return ;
}
USACO3.32Shopping Offers(DP)的更多相关文章
- USACO 完结的一些感想
其实日期没有那么近啦……只是我偶尔还点进去造成的,导致我没有每一章刷完的纪念日了 但是全刷完是今天啦 讲真,题很锻炼思维能力,USACO保持着一贯猎奇的题目描述,以及尽量不用高级算法就完成的题解……例 ...
- USACO3.34Home on the Range(DP)
之前做过一道类似的 国际象棋盘神马的.. 统计出以每个1作为右下角的最大正方形 那么以大于二到这个最大值之间为边的正方形都可以以这个为右下角 累加就可以了 dp[i][j] = min(dp[i-1] ...
- POJ - 1170 Shopping Offers (五维DP)
题目大意:有一个人要买b件商品,给出每件商品的编号,价格和数量,恰逢商店打折.有s种打折方式.问怎么才干使买的价格达到最低 解题思路:最多仅仅有五种商品.且每件商品最多仅仅有5个,所以能够用5维dp来 ...
- poj - 1170 - Shopping Offers(减少国家dp)
意甲冠军:b(0 <= b <= 5)商品的种类,每个人都有一个标签c(1 <= c <= 999),有需要购买若干k(1 <= k <=5),有一个单价p(1 & ...
- USACO3.3 A Game【区间dp】
这道题也是一道非常有意思的区间$dp$,和在纪中的这道题有点像:取数游戏 (除了取数规则其它好像都一样诶) 当时在纪中的时候就觉得这个$dp$非常不好想,状态定义都不是很容易想到. 但是做过一道这种题 ...
- 别人整理的DP大全(转)
动态规划 动态规划 容易: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...
- dp题目列表
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- 洛谷P2732 商店购物 Shopping Offers
P2732 商店购物 Shopping Offers 23通过 41提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目背景 在商店中, ...
- [转] POJ DP问题
列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...
随机推荐
- ActionBar功能,效果图一览
这里提供了效果预览,如果由你需要的界面,详细的代码可以去看原文. http://blog.csdn.net/android2me/article/details/8874846 一.概述 1.App ...
- JS七种加密解密方法
http://www.cnblogs.com/mq0036/p/4983858.html HTML或JS加密解密 本文一共介绍了七种方法: 一:最简单的加密解密 二:转义字符"\&q ...
- DBHelper 数据库帮助类
/// <summary> /// 数据库帮助类 /// <author>vito</author> /// </summary> public cla ...
- ServiceStack.Redis 破解
在github上下载了ServiceStack.Redis,做测试发现有限制,居然从v4开始就收费,无聊时,做了个源码分析 废话不多,上测试代码 try { ; i < ; i++) { red ...
- tar 命令基本使用(加密)
本文讲述tar命令的基本使用,special: 使用tar命令对文件加密. 假定在当前目录下有一个文件夹/stuff. 1.将/stuff目录下的所有文件打包成为.tar 文件. $ tar -cvf ...
- 转JSONObject put,accumulate,element的区别
public Object put (Object key, Object value) 将value映射到key下.如果此JSONObject对象之前存在一个value在这个key下,当前的 ...
- sublime_2014-11-19
http://xionggang163.blog.163.com/blog/static/376538322013930104310297/ 直接输入注册码就可以了 ----- BEGIN LICEN ...
- ISO 学习笔记 2015-03-15
Objective--C 一 关键字 @property 定义变量函数 @synthesize 实现变量函数 二 函数 alloc 分配内存 init 初始化 new 替代上面两个函数 分配内存,并且 ...
- gitlab ActionView::Template::Error (undefined method `[]' for nil:NilClass): 500错误
Started GET "/mygroup/myproject/tree/master/MyDirectory" for 127.0.0.1 at 2014-10-22 22:42 ...
- 【原创】Linux编译内核
Linux 编译内核 大致分这几个步骤 1.准备编译工具.内核文件 2.开始编译 3.将编译好的新内核install进系统 4.查看是否成功. 一.准备好必备的库和内核文件 1.添加必备的编译 ...