五维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)的更多相关文章

  1. USACO 完结的一些感想

    其实日期没有那么近啦……只是我偶尔还点进去造成的,导致我没有每一章刷完的纪念日了 但是全刷完是今天啦 讲真,题很锻炼思维能力,USACO保持着一贯猎奇的题目描述,以及尽量不用高级算法就完成的题解……例 ...

  2. USACO3.34Home on the Range(DP)

    之前做过一道类似的 国际象棋盘神马的.. 统计出以每个1作为右下角的最大正方形 那么以大于二到这个最大值之间为边的正方形都可以以这个为右下角 累加就可以了 dp[i][j] = min(dp[i-1] ...

  3. POJ - 1170 Shopping Offers (五维DP)

    题目大意:有一个人要买b件商品,给出每件商品的编号,价格和数量,恰逢商店打折.有s种打折方式.问怎么才干使买的价格达到最低 解题思路:最多仅仅有五种商品.且每件商品最多仅仅有5个,所以能够用5维dp来 ...

  4. poj - 1170 - Shopping Offers(减少国家dp)

    意甲冠军:b(0 <= b <= 5)商品的种类,每个人都有一个标签c(1 <= c <= 999),有需要购买若干k(1 <= k <=5),有一个单价p(1 & ...

  5. USACO3.3 A Game【区间dp】

    这道题也是一道非常有意思的区间$dp$,和在纪中的这道题有点像:取数游戏 (除了取数规则其它好像都一样诶) 当时在纪中的时候就觉得这个$dp$非常不好想,状态定义都不是很容易想到. 但是做过一道这种题 ...

  6. 别人整理的DP大全(转)

    动态规划 动态规划 容易: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...

  7. dp题目列表

    此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...

  8. 洛谷P2732 商店购物 Shopping Offers

    P2732 商店购物 Shopping Offers 23通过 41提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 在商店中, ...

  9. [转] POJ DP问题

    列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...

随机推荐

  1. 20151210jquery进阶 代码备份

    $(function () { /*$('form input[type=button]').click(function() { $.ajax({ type:'POST', //url:'http: ...

  2. Android----二维码开发

    Android----二维码开发 本文为原创,转载请注明出处:http://www.cnblogs.com/xiaobaicai12138/p/5644244.html 一.工具 谷歌的zxing 不 ...

  3. 获取API返回值

    //$return=getApiResult($url); // if ($return==200){ // //..... // } function getApiResult($url){ if( ...

  4. java 利用注解实现BaseDao 增删查改

    第一步,编写两个注解类,用于表明实体类对应的表名及字段. TableInfo.java 此注解用于标注表名及主键名 import static java.lang.annotation.Element ...

  5. poj2104:K-th Number

    思路:可持久化线段树,利用权值线段树,把建树过程看成插入,插入第i个元素就在第i-1棵树的基础上新建结点然后得到第i棵树,那么询问区间[l,r]就是第r棵树上的信息对应减去第l-1棵树上的信息,然后再 ...

  6. 每天一水SGU347

    今天本来应该要写校题解报告的,但是CF跪了,一题都没JUDGE出来,最后比赛取消了~郁闷啊! 后来闲的无事,就到处看看contest,随便点进去一个,看到一水题,几分钟写完,马上就WA了!~ 题目的信 ...

  7. UITextAlignmentCenter' is deprecated: first deprecated in iOS 6.0

  8. 移动端reset.css

    * { margin:; padding:; } article, aside, details, figcaption, figure, footer, header, hgroup, main, ...

  9. jquery 之事件 多库共存(noConflict)

    /*jquery 之 简单事件jquery 与其它库共存,提供了 .noConflict() 方法,用法如下<script src="jquery 库"><scr ...

  10. spring mvc 和mybatis整合 的异常处理

    1.自定义异常信息类 通过构造函数来实现异常信息的接收 public class CustomException extends Exception { //异常信息 private String m ...