题意:有两类装备,高级装备A和基础装备B。现在有m的钱。每种B有一个单价和可以购买的数量上限。每个Ai可以由Ci种其他物品合成,给出Ci种其他物品每种需要的数量。每个装备有一个贡献值。求最大的贡献值。已知物品的合成路线是一个严格的树模型。即有一种物品不会合成其他任意物品,其余物品都会仅仅可用作合成另外一种物品

思路:f[i][j][k],代表第i个物品,花费了j,向上提供k个i物品。

 #include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
int f[][][];
int num[],a[],b[],c[][],d[][];
int n,m,vis[],dp[][],w[],pd[];
void dfs(int x){
if (!num[x]){
b[x]=std::min(b[x],m/a[x]);
for (int i=;i<=b[x];i++)
for (int j=;j<=i;j++)
f[x][i*a[x]][j]=w[x]*(i-j);
return;
}
b[x]=0x7fffffff;
for (int i=;i<=num[x];i++){
int pur=c[x][i];
dfs(pur);
b[x]=std::min(b[x],b[pur]/d[x][i]);
a[x]+=d[x][i]*a[pur];
}
b[x]=std::min(b[x],m/a[x]);
for (int t=;t<=b[x];t++){
memset(dp,-0x3f3f3f3f,sizeof dp);
dp[][]=;
for (int i=;i<=num[x];i++)
for (int j=;j<=m;j++)
for (int k=;k<=j;k++)
dp[i][j]=std::max(dp[i][j],dp[i-][j-k]+f[c[x][i]][k][t*d[x][i]]);
for (int j=;j<=m;j++)
for (int k=;k<=t;k++)
f[x][j][k]=std::max(f[x][j][k],dp[num[x]][j]+(t-k)*w[x]);
}
}
int main(){
char s[];
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++){
scanf("%d",&w[i]);
scanf("%s",s+);
if (s[]=='A') pd[i]=;else pd[i]=;
num[i]=;
if (pd[i]==) {
scanf("%d%d",&a[i],&b[i]);
num[i]=;
continue;
}
scanf("%d",&num[i]);
for (int j=;j<=num[i];j++){
scanf("%d%d",&c[i][j],&d[i][j]);
vis[c[i][j]]=;
}
}
int i;
for (i=;i<=n;i++) if (!vis[i]) break;
int root=i;
memset(f,-0x3f3f3f3f,sizeof f);
dfs(root);
int ans=;
for (int i=;i<=m;i++)
for (int j=;j<=b[root];j++)
ans=std::max(ans,f[root][i][j]);
printf("%d\n",ans);
}

BZOJ 1017 魔兽地图DotR(树形DP)的更多相关文章

  1. 【BZOJ-1017】魔兽地图DotR 树形DP + 背包

    1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1566  Solved: 705[Submit][S ...

  2. [BZOJ1017][JSOI2008]魔兽地图DotR 树形dp

    1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 2597  Solved: 1010[Submit][ ...

  3. [BZOJ]1017 魔兽地图DotR(JSOI2008)

    BZOJ第一页做着做着就能碰到毒题,做到BZOJ1082小C就忍了,没想到下一题就是这种东西.这种题目不拖出来枭首示众怎么对得起小C流逝的青春啊. Description DotR (Defense ...

  4. bzoj 1017 魔兽地图DotR

    题目大意: 他们需要购买装备来提升自己的力量值,每件装备都可以使佩戴它的英雄的力量值提高固定的点数,所以英雄的力量值等于它购买的所有装备的力量值之和.装备分为基本装备和高级装备两种.基本装备可以直接从 ...

  5. BZOJ [JSOI2008]魔兽地图DotR

    1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1243  Solved: 532[Submit][S ...

  6. BZOJ 1017 魔兽地图

    Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...

  7. [bzoj1017][JSOI2008]魔兽地图 DotR (Tree DP)【有待优化】

    Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...

  8. 【bzoj1017】[JSOI2008]魔兽地图DotR

    1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1658  Solved: 755[Submit][S ...

  9. [BZOJ 4033] [HAOI2015] T1 【树形DP】

    题目链接:BZOJ - 4033 题目分析 使用树形DP,用 f[i][j] 表示在以 i 为根的子树,有 j 个黑点的最大权值. 这个权值指的是,这个子树内部的点对间距离的贡献,以及 i 和 Fat ...

随机推荐

  1. [LeetCode 122] - 买入与卖出股票的最佳时机II(Best Time to Buy and Sell Stock II)

    问题 假设你有一个数组,其中的第i个元素表示一只股票在第i天的价格. 设计一个算法找出最大的利润值.你可以进行任意多次的交易(即多次的卖出并买入一份股票).你不能在同一时间进行多次交易(即你必须在再次 ...

  2. 数据库 SQL语句优化

    温馨提示:本篇内容均来自网上,本人只做了稍微处理,未进行细致研究,仅当做以后不备之需,如若你喜欢可尽情转走. 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图 ...

  3. Spark集群模式概述

    作者:foreyou出处:http://www.foreyou.net/2015/06/22/spark-cluster-mode-overview/声明:本文采用以下协议进行授权: 署名-非商用|C ...

  4. opencv视频跟踪2

    在前面的报告中我们实现了用SURF算法计算目标在移动摄像机拍摄到的视频中的位置.由于摄像机本身像素的限制,加之算法处理时间会随着图像质量的提高而提高,实际实验发现在背景复杂的情况下,结果偏差可能会很大 ...

  5. 【POJ2136】Vertical Histogram(简单模拟)

    比较简单,按照样例模拟就好!~ #include <iostream> #include <cstdlib> #include <cstdio> #include ...

  6. [置顶] API相关工作过往的总结之Sandcastle简要使用介绍

    Sandcastle介绍 在微软推出Sandcastle之前,人们倾向于选择开源的NDoc(.NET代码文档生成器).NDo可以将 C#.NET 编译生成的程序集和对应的 /doc XML文档,自动转 ...

  7. git hub 资料汇总

    tobecrazy  Selenium automation test framework    https://github.com/tobecrazy/Demo Smartphone Test F ...

  8. javascript 中 "!function(){}() " 是什么意思?

    叹号后面跟函数!function和加号后面跟函数+function都是跟(function(){})();这个函数是一个意思,都是告诉浏览器自动运行这个匿名函数的,因为!+()这些符号的运算符是最高的 ...

  9. PhoneGap 和 PhoneGap Build 是什么?

    PhoneGap是目前唯一支持7种平台的开源移动开发框架,支持的平台包括iOS.Android.BlackBerry OS.Palm WebOS.Windows Phone 7.Symbian和Bad ...

  10. oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)

    Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...