bzoj1017 [JSOI2008]魔兽地图DotR——DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1017
好难想的状态啊!f[i][j][k]表示i号物品有j个向上贡献,一共花了k钱的最大力量;
g[i][j]用在子树中,表示前i个子树花j钱的最大值;
调了半上午,终于发现原来是少看了一个范围,f的第二维的范围不是51而是100啊啊啊啊啊啊!
除此之外此题也有很多要注意的地方,写在注释里了。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const maxn=,maxm=,inf=;
int n,m,L[maxn],M[maxn],P[maxn],head[maxn],ct;
int f[maxn][maxn<<][maxm],g[maxn][maxm],rd[maxn],h[maxn][maxm];
struct N{
int to,next,w;
N(int t=,int n=,int w=):to(t),next(n),w(w) {}
}edge[];
void dp(int x)
{
if(!head[x])//叶子
{
L[x]=min(L[x],m/M[x]);//!
for(int i=;i<=L[x];i++)//有i个
for(int j=;j<=i;j++)//贡献j个
f[x][j][M[x]*i]=P[x]*(i-j);
return;//!!!!!!!!!!
}
L[x]=inf;//!高级装备原本没有限制
for(int i=head[x],u;i;i=edge[i].next)
{
u=edge[i].to;
dp(u);
L[x]=min(L[x],L[u]/edge[i].w);
M[x]+=M[u]*edge[i].w;//
}
L[x]=min(L[x],m/M[x]);
memset(g,-0x3f,sizeof g);//!!
g[][]=;//!!
for(int l=L[x];l>=;l--)//x物品有l个 //倒序! //l可以有0个!!!!!!!!!!!
{
int tot=;
// memset(g,0,sizeof g);//放在外面!
for(int i=head[x],v;i;i=edge[i].next)
{
v=edge[i].to;
tot++;
for(int j=;j<=m;j++)//一共有j钱
for(int k=;k<=j;k++)//给v k钱
g[tot][j]=max(g[tot][j],g[tot-][j-k]+f[v][l*edge[i].w][k]);
//g每次不会重新赋初值,所以需要l倒序来保证本次一定可以合成l个x物品
}
for(int j=;j<=l;j++)
for(int k=;k<=m;k++)
f[x][j][k]=max(f[x][j][k],g[tot][k]+P[x]*(l-j));
}
}
int main()
{
scanf("%d%d",&n,&m);
char dc;
// memset(L,0x3f,sizeof L);
memset(f,-0x3f3f3f3f,sizeof f);
for(int i=,x,a,b;i<=n;i++)
{
scanf("%d",&P[i]);
cin>>dc;
if(dc=='A')
{
scanf("%d",&x);
while(x--)
{
scanf("%d%d",&a,&b);
edge[++ct]=N(a,head[i],b);head[i]=ct;
rd[a]++;
}
}
else scanf("%d%d",&M[i],&L[i]);
}
int tot=;
for(int i=;i<=n;i++)
if(!rd[i])
{
tot++;
dp(i);
for(int j=;j<=m;j++)
for(int k=;k<=j;k++)
for(int l=;l<=L[i];l++)
h[tot][j]=max(h[tot][j],h[tot-][k]+f[i][l][j-k]);
}
int ans=;
for(int j=;j<=m;j++)ans=max(ans,h[tot][j]);
printf("%d\n",ans);
return ;
}
bzoj1017 [JSOI2008]魔兽地图DotR——DP的更多相关文章
- [BZOJ1017][JSOI2008]魔兽地图DotR 树形dp
1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 2597 Solved: 1010[Submit][ ...
- BZOJ1017: [JSOI2008]魔兽地图DotR【树形DP】【玄学】
Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...
- [bzoj1017][JSOI2008]魔兽地图 DotR (Tree DP)【有待优化】
Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...
- BZOJ1017 [JSOI2008]魔兽地图DotR 【树形dp + 背包dp】
题目链接 BZOJ1017 题解 orz hzwer 树形dp神题 设\(f[i][j][k]\)表示\(i\)号物品恰好花费\(k\)金币,并将\(j\)个物品贡献给父亲的合成时的最大收益 计算\( ...
- BZOJ1017: [JSOI2008]魔兽地图DotR
传送门 设$f[i][j][k]$表示对于第$i$个点,向父节点贡献$j$个已合成的装备,花费了$k$的代价,最多获得的力量值. 单纯的$f[i][j][k]$是很难转移的,主要原因是无法维护和其他儿 ...
- 【BZOJ-1017】魔兽地图DotR 树形DP + 背包
1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1566 Solved: 705[Submit][S ...
- 【bzoj1017】[JSOI2008]魔兽地图DotR
1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1658 Solved: 755[Submit][S ...
- BZOJ [JSOI2008]魔兽地图DotR
1017: [JSOI2008]魔兽地图DotR Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1243 Solved: 532[Submit][S ...
- 1017: [JSOI2008]魔兽地图DotR - BZOJ
Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...
随机推荐
- 社会信息化环境下的IT新战略
我们现在所处的信息化环境正在发生改变,技术已经成为影响组织的最重要的外部力量,传统的正金字塔的结构被移动互联网深深改变:员工能够更加自由的获取信息,变成更多的信息链接,这种链接不光连接人和组织,还连接 ...
- Linux 开发板网络设置
改动IP地址步骤: ①改动/etc/eth0-setting 命令:vi /etc/eth0-setting ②改动对应的信息.最后:wq退出 ③重新启动eth0 命令:/etc/init.d/ifc ...
- PHP网站渗透中的奇技淫巧:检查相等时的漏洞
PHP是现在网站中最为常用的后端语言之一,是一种类型系统 动态.弱类型的面向对象式编程语言.可以嵌入HTML文本中,是目前最流行的web后端语言之一,并且可以和Web Server 如apache和n ...
- Spring-boot和Spring-Cloud遇到的问题
1.spring cloud 使用 feign 启动报错 错误信息 org/springframework/cloud/client/loadbalancer/LoadBalancedRetryFa ...
- svn简单介绍
版本号控制(Revision control)是维护project蓝图的标准做法,能追踪project蓝图从诞生一直到定案的过程.是一种记录若干文件内容变化.以便将来查阅特定版本号修订情况的系统. 能 ...
- C#如何实现挂机锁
首先在主窗体中设置一个子窗体的实例,然后当点击挂机之后,隐藏当前窗体,同时显示子窗体. 把子窗体的背景窗体设置如下属性(主要是背景随便改成一个图片,然后FormBorderStyle改成None, ...
- POJ3067:Japan(线段树)
Description Japan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for th ...
- nginx 配置nginx.conf,负载均衡,逻辑分流
nginx 最重要的配置文件nginx.conf: 一般的配置我不做解释,网上到处都是,主要对主要的几点进行注释(如下) worker_processes ; error_log /data/logs ...
- HashTable源代码剖析
<span style="font-size:14px;font-weight: normal;">public class Hashtable<K,V> ...
- JAVA WEB学习笔记(二):Tomcat服务器的安装及配置
一.Tomcat的下载及安装. 前往Tomcat官网下载安装包或者免安装压缩包.链接http://tomcat.apache.org/ 这里,我选择的是Tomcat8.0,而不是最新的Tomcat9. ...