正解:二分+$dp$

解题报告:

传送门$QwQ$

这题长得好套路嗷,,,就一看就看出来是个$01$分数规划+树形$dp$嘛$QwQ$.

考虑现在二分的值为$mid$,若$mid\leq as$,则有$\frac{\sum p_i}{\sum s_i}\geq mid,\sum p_i-mid\cdot \sum s_i\geq 0$.

于是就把每个点的点权改为$mid\cdot s-p$.现在变成要选$K$个节点使得点权之和取$max$.

于是就树形$dp$呗?设$f_{i,j}$表示点$i$的子树中选了$j$个点的$max$,转移的时候强制点$i$必须要选就成.

$over$.

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define lf double
#define gc getchar()
#define t(i) edge[i].to
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];i;i=edge[i].nxt) const int N=+,inf=1e9;
const lf eps=1e-;
int n,K,sz[N];
lf f[N][N],q[N],tmp[N];
vector<int>V[N];
struct node{int s,p;}nod[N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void merg(ri x,ri y)
{
rp(i,,K)tmp[i]=-inf;
rp(i,,sz[x])rp(j,,min(K-i,sz[y]))tmp[i+j]=max(f[x][i]+f[y][j],tmp[i+j]);
rp(i,,K)f[x][i]=max(f[x][i],tmp[i]);
}
void dfs(ri nw){ri siz=V[nw].size();sz[nw]=;rp(i,,siz-)dfs(V[nw][i]),merg(nw,V[nw][i]),sz[nw]+=sz[V[nw][i]];}
il bool check(lf dat){memset(f,-,sizeof(f));rp(i,,n)f[i][]=nod[i].p-dat*nod[i].s;dfs();return f[][K]>=;} int main()
{
freopen("4322.in","r",stdin);freopen("4322.out","w",stdout);
K=read()+;n=read();rp(i,,n){nod[i]=(node){read(),read()};V[read()].push_back(i);}
lf l=,r=;while(r-l>=eps){lf mid=(l+r)/;if(check(mid))l=mid;else r=mid;}printf("%.3lf\n",r);
return ;
}

最新文章

  1. java并发编程(十三)经典问题生产者消费者问题
  2. hdu 4622 Reincarnation
  3. java怎样读取数据库表中字段的数据类型?
  4. onTextChanged参数解释及实现EditText字数监听
  5. hdu 1698 Just a Hook_线段树
  6. POC- Proof of Cocept -- 概念验证
  7. C#函数式程序设计之泛型
  8. eclipse中注释常用关键字
  9. 老李推荐:第6章5节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-事件
  10. As 400错
  11. python3+requests库框架设计03-请求重新封装
  12. 【bzoj4730】 Alice和Bob又在玩游戏
  13. go语言中make和new的区别
  14. Spring源码分析(二十五)finishRefresh
  15. WebView 加载网页和java 与js交互
  16. FocusBI:SSAS体系结构(原创)
  17. Java 的BigDecimal
  18. 解决 free(): invalid pointer: 0x00000000019ff700 运行时报错(caffe)(libtool使用)
  19. C#质因子(自己别扭的逻辑。。)
  20. C、C++文件操作大全

热门文章

  1. mysql ip常见异常
  2. mysql 表名和字段、备注
  3. Python第三方包的egg info 是什么东西
  4. H3C 虚拟模板方式配置PPP MP
  5. 51nod1327 棋盘游戏
  6. 浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
  7. H3C DHCP服务器基本配置示例
  8. H3C 802.1X典型配置举例
  9. 【p082】排座椅
  10. Linux 内核 struct device 设备