博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ4254】Aerial Tramway 树形DP
阅读量:4641 次
发布时间:2019-06-09

本文共 1669 字,大约阅读时间需要 5 分钟。

【BZOJ4254】Aerial Tramway

题意:给你一座山上n点的坐标,让你在山里建m条缆车,要求缆车两端的高度必须相等,且中间经过的点的高度都小于缆车的高度。并且不能存在一个点位于至少k条缆车的下方。求缆车的最大总长度。

n,m<=200,k<=10。

题解:这么神奇的题面居然有人能想到要用树形DP。。。

先枚举所有可能的缆车,然后暴力得出这些缆车的关系。因为上面的缆车一定比它下面的缆车长,所以这形成了一个树形结构,我们建树跑树形DP。

用f[x][a][b]表示x的子树中已经减了y个缆车,且一个点最多位于k条缆车下方,的最大总长度。转移时是惯用的树形背包套路,然后用前缀最大值优化一下即可。时间复杂度O(n*m*k)。

 

#include 
#include
#include
#include
using namespace std;int T,n,m,K,tot,ans,cas;int x[210],y[210],v[210],bel[210],siz[210],g[210][15],f[210][210][15],d[210];vector
ch[210];inline int rd(){ int ret=0,f=1; char gc=getchar(); while(gc<'0'||gc>'9') {if(gc=='-') f=-f; gc=getchar();} while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar(); return ret*f;}void dfs(int x){ siz[x]=1; int i,j,k,l,y; for(l=0;l<=K;l++) f[x][0][l]=0; for(i=0;i<(int)ch[x].size();i++) { y=ch[x][i],dfs(y); memcpy(g,f[x],sizeof(f[x])); for(j=0;j<=siz[x]&&j<=m;j++) for(k=0;k<=siz[y]&&j+k<=m;k++) for(l=0;l<=K;l++) g[j+k][l]=max(g[j+k][l],f[x][j][l]+f[y][k][l]); siz[x]+=siz[y]; for(j=0;j<=siz[x]&&j<=m;j++) for(l=1;l<=K;l++) f[x][j][l]=max(g[j][l],f[x][j][l-1]); } for(j=min(m,siz[x]);j>=1;j--) for(l=1;l<=K;l++) { f[x][j][l]=max(f[x][j][l],f[x][j-1][l-1]+v[x]); f[x][j][l]=max(f[x][j][l],f[x][j][l-1]); } ans=max(ans,f[x][m][K]);}void work(){ tot=0,K--; int i,j; for(i=1;i<=n;i++) x[i]=rd(),y[i]=rd(),ch[i].clear(),bel[i]=0; for(i=1;i<=n;i++) { for(j=i-1;j>=1;j--) { if(y[j]>y[i]) break; if(y[j]==y[i]) { bel[i]=++tot,v[tot]=x[i]-x[j],d[tot]=0; break; } } if(y[j]==y[i]&&bel[i]) for(j++;j

 

转载于:https://www.cnblogs.com/CQzhangyu/p/7749466.html

你可能感兴趣的文章
Java 内存分配
查看>>
ObjectDataSource控件执行Delete操作时,出现“未能找到带参数的非泛型方法”的解决方案...
查看>>
Ubuntu17.10 React Native 环境搭建
查看>>
Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结
查看>>
jQuery-2.1.4.min.js:4 Uncaught TypeError: Illegal invocation
查看>>
jvm-监控指令-jdump
查看>>
maven安装与配置
查看>>
关于Cascading
查看>>
小奇的仓库(树形DP)
查看>>
VS2010 中,windows服务不能添加 System.Web 引用
查看>>
Python全栈之jQuery笔记
查看>>
NPM常用命令install 淘宝镜像 update等
查看>>
如何修改帝国cms文章点击量默认值和成倍增加
查看>>
POJ 2888 Magic Bracelet
查看>>
C#中的接口
查看>>
http-关于application/x-www-form-urlencoded等字符编码的解释说明
查看>>
【Calculus 微积分の一些个人理解】
查看>>
vxworks固件分析
查看>>
对局匹配
查看>>
用kattle将数据从SQLserver中导入到vertica中
查看>>