思路:

先二分答案

f[x][j]表示在x的子树里选j个点

f[x][j+k]=max(f[x][j+k],f[x][j]+f[v[i]][k]);

初始化

x!=0 -> f[x][1]=p[x]-s[x]*mid

x=0 -> f[x][0]=0

类似4033的那样转移 看似O(n^3)实际O(n^2)

加一个二分 复杂度O(能过)

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=2505;
int n,K,s[N],p[N],r[N],first[N],next[N],v[N],tot,size[N];
double f[N][N],mid;
void add(int x,int y){v[tot]=y,next[tot]=first[x],first[x]=tot++;}
void dfs(int x){if(x){size[x]=1;f[x][1]=p[x]-s[x]*mid;}else size[0]=0,f[0][0]=0;for(int i=first[x];~i;i=next[i]){dfs(v[i]);for(int j=size[x];j>=0;j--){for(int k=size[v[i]];k>=0;k--){f[x][j+k]=max(f[x][j+k],f[x][j]+f[v[i]][k]);}}size[x]+=size[v[i]];}
}
int main(){memset(first,-1,sizeof(first));scanf("%d%d",&K,&n);for(int i=1;i<=n;i++){scanf("%d%d%d",&s[i],&p[i],&r[i]);add(r[i],i);}double l=0,r=0x3f3f3f;while(r-l>1e-5){for(int i=0;i<=n;i++)for(int j=0;j<=n;j++)f[i][j]=-0x3f3f3f;mid=(l+r)/2;dfs(0);if(f[0][K]>0)l=mid;else r=mid;}printf("%.3lf\n",l);
}

转载于:https://www.cnblogs.com/SiriusRen/p/6637468.html

BZOJ 4753 二分+树形DP相关推荐

  1. 【题解】hdu 3586 Information Disturbing 二分 树形dp

    题目描述 Information Disturbing Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Jav ...

  2. 吉吉王国(二分+树形dp)

    吉吉王国 题意: n个点,m个边,有边权,现在要求叶子节点无法与1号点连通,要求切断的总长度不能超过m,且切断的最长的长度尽可能断 题解: 题意的前半部分可以确定是树形dp,后半部分可以确定为是二分 ...

  3. bzoj 1369: Gem 树形dp

    题目大意 给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数 唯一的限制条件是相临的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小.N<=10000 题解 我们可以 ...

  4. P4383-[八省联考2018]林克卡特树【wqs二分,树形dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P4383 题目大意 nnn个点的一棵树,要求删除kkk条边然后接上kkk条边权为000的边后形成的树上选择一对(p, ...

  5. BZOJ 2651 城市改建 树形DP+模拟?

    题意 给一颗树,删除一条边再加一条边,使它仍为一颗树且任意两点间的距离的最大值最小. 题目数据范围描述有问题,n为1或重建不能使任意两点距离最大值变小,可以输出任意答案. 分析 删除一条边后会使它变成 ...

  6. BZOJ 2133 切割(树形DP,树上背包)大概是本题全网第一篇题解 >_<【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ 2133 切割这道题全网搜不到任何一篇题解 >_< 看评测记录也没有几个人AC- ...

  7. BZOJ.3227.[SDOI2008]红黑树tree(树形DP 思路)

    BZOJ orz MilkyWay天天做sxt! 首先可以树形DP:\(f[i][j][0/1]\)表示\(i\)个点的子树中,黑高度为\(j\),根节点为红/黑节点的最小红节点数(最大同理). 转移 ...

  8. UOJ #131 BZOJ 4199 luogu P2178【NOI2015】品酒大会 (后缀自动机、树形DP)

    UOJ #131 BZOJ 4199 luogu P2178[NOI2015]品酒大会 (后缀自动机.树形DP) 水是水,但是写出了不少问题,因此写一发博客. https://www.luogu.or ...

  9. 两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4123 题目大意: 给一棵树,n个节点,每条边有个权值,从每个点i出发有个不经过自己走过的点的最远距离 ...

最新文章

  1. workerman连接mysql_workerman Mysql使用
  2. PyQt5教程——组件 Ⅱ(八)
  3. mysql  基本操作(二)
  4. 【研究院】滴滴研究院,都在做什么
  5. 毕业一年,疫情之下的95后工作:有的退而求次,有的忐忑前行
  6. C# 容器重用避免GC 的论证
  7. git拉取项目以及提交项目
  8. 直接用自己服务器做图床可以吗_图床有什么用,图片放自己的服务器上不可以吗?...
  9. 自己动手架设linux下Web服务器(图)4
  10. 投影仪幕布增益_当贝投影带你看投影仪使用幕布和白墙的区别实测!
  11. sed个人习惯用法总结
  12. Kubernetes入门——Longhorn简介
  13. 常用的C++ STL
  14. 如何用vb制作“简单”的表白软件
  15. 基于qt和mysql的地铁线路系统_课内资源 - 基于QT实现的可视化地铁换乘查询系统...
  16. IDA Pro、OllyDbg、LordPE和UltraEdit简单实用实验
  17. 第八章 机器人语音交互 课后作业
  18. Keil MDK5 STM32F401CCU6开发环境配置
  19. ps 自动生成html代码,ps怎么生成html网页文件 PS生成html网页文件的具体教程
  20. update与fixedupdate检测键盘输入的出现的问题

热门文章

  1. 工作五年的UI设计师,现在混的怎么样?不看是你的损失
  2. UITableview高度计算
  3. Android微信跳一跳,自动跳App实现
  4. 阿里重启维护Dubbo了
  5. 优秀博客 --敏感词汇过滤
  6. linux DNS安装配置
  7. Editplus 3.0 开发ext 教程
  8. ZAB 协议和Paxos 算法
  9. ElasticSearch中的集群、节点、索引、文档、类型是什么?
  10. Golang list双向链表源码走读