题目链接

题意分析

一看就知道是一道\(01\)分数规划的题

我们二分值之后 跑树形背包就可以了

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<string>
#include<queue>
#include<map>
#include<stack>
#include<list>
#include<set>
#include<deque>
#include<vector>
#include<ctime>
#define ll long long
#define inf 1e9
#define N 508
#define IL inline
#define M 1008611
#define D double
#define eps 1e-5
#define R register
using namespace std;
template<typename T>IL void read(T &_)
{
T __=0,___=1;char ____=getchar();
while(!isdigit(____)) {if(____=='-') ___=0;____=getchar();}
while(isdigit(____)) {__=(__<<1)+(__<<3)+____-'0';____=getchar();}
_=___ ? __:-__;
}
/*-------------OI使我快乐-------------*/
int n,m,tot;
struct Node
{
int xx,yy;
}e[N];
D dp[N][N],num[N];
D le,ri=inf,ans;
int siz[N],to[N],nex[N],head[N];
IL void add(int x,int y)
{to[++tot]=y;nex[tot]=head[x];head[x]=tot;}
IL void dfs(int now,int fat)
{
dp[now][0]=0;siz[now]=1;
for(R int i=head[now];i;i=nex[i])
{
int v=to[i];
if(v==fat) continue;
dfs(v,now);
siz[now]+=siz[v];
for(R int j=min(m,siz[now]);j>=0;--j)
for(R int k=0;k<=min(j,siz[v]);++k)
dp[now][j]=max(dp[now][j],dp[now][j-k]+dp[v][k]);
}
for(R int i=siz[now];i;--i) dp[now][i]=dp[now][i-1]+num[now];
}
IL bool check(D now)
{
for(R int i=1;i<=n;++i)
for(R int j=0;j<=m;++j) dp[i][j]=-inf;
for(R int i=1;i<=n;++i) num[i]=(D)e[i].xx-((D)now*e[i].yy);
dfs(1,0);
for(R int i=1;i<=n;++i)
if(dp[i][m]>-eps) return 1;
return 0;
}
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
read(n);read(m);m=n-m;
for(R int i=1;i<=n;++i) read(e[i].xx);
for(R int i=1;i<=n;++i) read(e[i].yy);
for(R int i=1,x,y;i<n;++i)
{
read(x);read(y);
add(x,y);add(y,x);
}
while((ri-le)>eps)
{
D mid=(le+ri)/2.0;
if(check(mid)) ans=le=mid;
else ri=mid;
}
printf("%.1f\n",ans);
// fclose(stdin);
// fclose(stdout);
return 0;
}

HEOI 2019 RP++

最新文章

  1. 把 Mac 上的 bash 换成 zsh
  2. IOS 问题集锦
  3. 使用命令行备份指定文件夹并保留最新N份
  4. 快速搭建企业subversion
  5. Ecshop ajax 局部刷新购物车功能
  6. Arcgis 10.1中空间连接功能
  7. Java compiler level does not match the version of the installed Java project facet.解决办法
  8. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
  9. SQL Server Compact免安装部署
  10. 系列五AnkhSvn
  11. Bootstrap入门(三)&lt;p&gt;标签的css样式
  12. dotnet-warp &amp;&amp; NSSM 部署 .net core 项目到 windows 服务
  13. 程序员50题(JS版本)(八)
  14. table 的部分使用,固定行,固定列等
  15. sqlserver 中常见的函数 数学函数
  16. HDU 6059 17多校3 Kanade&#39;s trio(字典树)
  17. python所有基础
  18. Sorted sets
  19. A计划(BFS)
  20. 浅析10种常见的黑帽seo手法

热门文章

  1. set 续3
  2. POJ1458 最长公共子序列
  3. Red Hat 系列如何快速定制二进制内核 RPM 包?
  4. Castle ActiveRecord学习(六)数据验证
  5. [Selenium]计算坐标进行拖拽,重写dragAndDropOffset
  6. 关于C语言中的Complex(复数类型)和imaginary(虚数类型)
  7. vue生命周期小笔记
  8. CodeForces 518A Vitaly and Strings (水题,字符串)
  9. C++友元函数、友元类
  10. POJ2349 Arctic Network 2017-04-13 20:44 40人阅读 评论(0) 收藏