题目意思为有一棵树,对每个结点有两个值 v[i] 和 w[i],让你在这树上找一棵子树,使得 sum{ v[i] }/ sum { w[i] } 最大。二分这个答案 r ,对每个结点,重新计算一个值 t[i]= v[i]- r* w[i]。问题变成判定是否存大一棵子树,使得 t[i] 权值和大于0。
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int const N= 110;
int v[N], w[N], flag[N];
int n, k;
double val[N];
double const inf= -1e300;
vector<int> mat[N];
double dp[N][N];
int isok= 0;
int dfs( int u ){
flag[u]= 1;
int num= 1; dp[u][1]= val[u];
for( int i= 0; i< mat[u].size(); ++i ){
int v= mat[u][i];
if( flag[v] ) continue;
int tmp= dfs(v); num+= tmp;
for( int j= n; j> 0; j-- ){
for( int t= 1; t< j; ++t )
if( dp[u][j-t]+ dp[v][t]> dp[u][j] )
dp[u][j]= dp[u][j-t]+ dp[v][t];
}
}
return num;
}
void solve(){
double left= 0, right= 10000000;
while( right- left> 1e-4 ){
double mid= (left+ right)/ 2.0;
for( int i= 1; i<= n; ++i )val[i]= 1.0* v[i]- mid* w[i];
isok= 0;
for( int i= 0; i<= n; ++i )
for( int j= 0; j<= n; ++j )
dp[i][j]= inf;
for( int j= 0; j<= n; ++j ) flag[j]= 0;
dfs( 1 );
for( int i= 1; i<= n; ++i )
for( int j= k; j<= n; ++j )
if( dp[i][j]>= 0 ) isok= 1;
if( isok ) left= mid;
else right= mid;
}
printf("%.2lf\n", left );
}
int main(){
int test;
scanf("%d",&test );
while( test-- ){
scanf("%d%d",&n,&k );
for( int i= 1; i<= n; ++i ) scanf("%d", v+ i );
for( int j= 1; j<= n; ++j ) scanf("%d", w+ j );
for( int i= 0; i<= n; ++i ) mat[i].clear();
for( int i= 1; i< n; ++i ){
int u, v;
scanf("%d%d",&u,&v );
mat[u].push_back(v);
mat[v].push_back(u);
}
solve();
}
return 0;
}
分享到:
相关推荐
**Intel XTU(Extreme Tuning Utility)v6.4.1.19详解** Intel XTU,全称为Intel Extreme Tuning Utility,是一款专为英特尔CPU设计的免费性能优化工具,适用于Windows操作系统。此版本v6.4.1.19为用户提供了更精细...
英特尔超频软件(XTU)CPU超频使用
**Intel XTU极限超频工具详解** Intel XTU(Extreme Tuning Utility)是英特尔公司推出的一款免费的系统优化和超频软件,专为基于Intel Core系列处理器的台式机和笔记本电脑设计。这款工具旨在帮助用户提升计算机...
英特尔 XTU是一款基于 Windows 的性能调优软件,使新手和经验丰富的发烧友能够对系统进行超频、监视和压力等。软件接口提供了大多数发烧友平台上常见的一组强大功能,以及新的英特尔应用处理器和英特尔主板上可用的...
xtu Java课程设计 通过分析xtu Java课程设计的题目,我们可以总结出以下几个关键知识点: 1. 文件搜索工具: * GUI 界面的设计和实现 * 正则表达式搜索功能的实现 * 自动内码识别功能的实现 * 多线程编程的...
"有限差分法求解偏微分方程MATLAB" 有限差分法是数值分析中的一种重要方法,用于求解偏微分方程。它的基本思想是将连续的定解区域用有限个离散点构成的网格来代替,将连续定解区域上的连续变量的函数用在网格上定义...
英特尔CPU超频工具,工功能强大的软件超频程序。使用需要注意。
有限差分法求解偏微分方程 MATLAB 一、有限差分法的基本思想 有限差分法是一种数值方法,通过有限个微分方程近似求导从而寻求微分方程的近似解。其基本思想是把连续的定解区域用有限个离散点构成的网格来代替;把...
Intel® 酷睿™ 處理器家族。 Intel extreme tuning Utility 是簡單的 Windows * 為基礎的效能調整軟體超頻、 監控並增強系統強度,無論是新手或有經驗的高手。軟體介面提供了一套大多數愛好者平台,提供全新的 ...
xtu人工智能实验3,BP神经网络,人脸识别_XTU_artificial_intelligence_BP_2.0
本实验报告是针对湘潭大学计算机科学与技术专业学生的“XTU编译原理”课程所编写的,旨在深入理解和实践编译器的基本原理和设计过程。编译原理是一门核心的计算机科学课程,它研究如何将高级编程语言转化为机器可...
二、推导几种差分格式的过程: 有限差分法的基本思想是把连续的定解区域用有限个离散点构成的网格来代替;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商...
Xtu是用于使用xtUML方法实施平台特定模型(PSM)的支持框架。 xtUML是针对软件和硬件开发的基于模型的系统工程(MBSE)的一种形式化方法。 Xtu实现了xtUML元素“域”,“网桥”,“信号”,“类”,“状态”,“事件...
eXtreme Talent University(XTU)需要为他们的校名打印一些特别的图形,为了美观,他们选择了方阵。现在他们需要你的帮助,帮 他把这些方阵打印出来。如果方阵一边只由一个XTU的校名组成,则方阵为: XTU XTU XTU
XTU数字图像处理期末考试复习.md
### Java多媒体程序设计知识点 #### 15.1 声音文件的播放 声音作为多媒体的重要组成部分,在信息传递方面发挥着不可替代的作用。在Java中,开发人员可以通过内置的工具包来处理并播放多种格式的声音文件。...
湘潭大学保研攻略_XTU-postgraduate-recommendation
【湘潭大学xtu网络工程与管理考试复习资料、试卷】是一份针对湘潭大学网络工程与管理课程的期末考试复习资源集合。这份资料包含了历年来的试卷、课程作业、课程题型以及相关的技术文档,旨在帮助学生全面掌握课程...
电力系统中的XTU设备是实现自动化监控和管理的关键组件,其中RTU、TTU、DTU和FTU分别承担不同的职责。以下是对这些设备的详细解释: 1. RTU(远程终端单元):RTU是一种远程监控设备,专门用于收集和处理现场的信号...
7. `connect`函数用于建立连接,第一个参数应为`connectsocket`,第二个参数应为`resptr->ai_addr`,同样来自于`getaddrinfo`的结果。 8. 如果`connect`失败,需要关闭之前创建的套接字,即`close(connectsocket)`。...