P1642 规划
2024-09-26 06:53:47
题目链接
题意分析
一看就知道是一道\(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++
最新文章
- 把 Mac 上的 bash 换成 zsh
- IOS 问题集锦
- 使用命令行备份指定文件夹并保留最新N份
- 快速搭建企业subversion
- Ecshop ajax 局部刷新购物车功能
- Arcgis 10.1中空间连接功能
- Java compiler level does not match the version of the installed Java project facet.解决办法
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
- SQL Server Compact免安装部署
- 系列五AnkhSvn
- Bootstrap入门(三)<;p>;标签的css样式
- dotnet-warp &;&; NSSM 部署 .net core 项目到 windows 服务
- 程序员50题(JS版本)(八)
- table 的部分使用,固定行,固定列等
- sqlserver 中常见的函数 数学函数
- HDU 6059 17多校3 Kanade&#39;s trio(字典树)
- python所有基础
- Sorted sets
- A计划(BFS)
- 浅析10种常见的黑帽seo手法
热门文章
- set 续3
- POJ1458 最长公共子序列
- Red Hat 系列如何快速定制二进制内核 RPM 包?
- Castle ActiveRecord学习(六)数据验证
- [Selenium]计算坐标进行拖拽,重写dragAndDropOffset
- 关于C语言中的Complex(复数类型)和imaginary(虚数类型)
- vue生命周期小笔记
- CodeForces 518A Vitaly and Strings (水题,字符串)
- C++友元函数、友元类
- POJ2349 Arctic Network 2017-04-13 20:44 40人阅读 评论(0) 收藏