题面

0/1分数规划+树形背包检查

要求$\frac{\sum P_i}{\sum S_i}的最大值,$按照0/1分数规划的做法,二分一个mid之后把式子化成$\sum P_i=\sum S_i*mid$。然后相当于每个点$i$的点权是$P_i-S_i*mid$来做树形背包。

然而我并不太会树形背包=。=

设$dp[i][j]$表示以$i$为根的子树中选出$j$个物品的最优解,然后转移的时候 枚举子树->枚举已经合并好的部分->枚举一棵新子树 来转移

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
const double inf=1e9;
int p[N],noww[N],goal[N],siz[N];
double pwr[N],cst[N],val[N],dp[N][N];
int n,k,rd,cnt;
double l,r,mid,ans;
void link(int f,int t)
{
noww[++cnt]=p[f];
goal[cnt]=t,p[f]=cnt;
}
void mark(int nde)
{
siz[nde]=;
for(int i=p[nde];i;i=noww[i])
mark(goal[i]),siz[nde]+=siz[goal[i]];
}
void DFS(int nde)
{
int size=,mini=;
for(int i=;i<=k;i++) dp[nde][i]=-inf;
if(nde) dp[nde][]=val[nde],size++,mini++;
else dp[nde][]=;
for(int i=p[nde];i;i=noww[i])
{
DFS(goal[i]);
for(int j=size;j>=mini;j--)
for(int k=;k<=siz[goal[i]];k++)
dp[nde][j+k]=max(dp[nde][j+k],dp[nde][j]+dp[goal[i]][k]);
size+=siz[goal[i]];
}
}
int main()
{
register int i,j;
scanf("%d%d",&k,&n);
for(i=;i<=n;i++)
{
scanf("%lf%lf%d",&cst[i],&pwr[i],&rd);
link(rd,i),r=max(r,(double)pwr[i]);
}
mark();
for(i=;i<=;i++)
{
mid=(l+r)/;
for(j=;j<=n;j++)
val[j]=pwr[j]-mid*cst[j];
DFS(); (dp[][k]<)?r=mid:l=mid;
}
printf("%.3lf",l);
return ;
}

解题:JSOI 2016 最佳团体的更多相关文章

  1. [JSOI 2016] 最佳团体(树形背包+01分数规划)

    4753: [Jsoi2016]最佳团体 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2003  Solved: 790[Submit][Statu ...

  2. [JSOI 2016] 最佳团体

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4753 [算法] 很明显的分数规划 可以用树形动态规划(树形背包)检验答案 时间复杂度 ...

  3. 【BZOJ4753】最佳团体(分数规划,动态规划)

    [BZOJ4753]最佳团体(分数规划,动态规划) 题面 BZOJ Description JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一 ...

  4. BZOJ_4753_[Jsoi2016]最佳团体_树形背包+01分数规划

    BZOJ_4753_[Jsoi2016]最佳团体_树形背包+01分数规划 Description JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人 ...

  5. loj#2071. 「JSOI2016」最佳团体

    题目链接 loj#2071. 「JSOI2016」最佳团体 题解 树形dp强行01分规 代码 #include<cstdio> #include<cstring> #inclu ...

  6. BZOJ 4753 [Jsoi2016]最佳团体 | 树上背包 分数规划

    BZOJ 4753 [Jsoi2016]最佳团体 | 树上背包 分数规划 又是一道卡精度卡得我头皮发麻的题-- 题面(--蜜汁改编版) YL大哥是24OI的大哥,有一天,他想要从\(N\)个候选人中选 ...

  7. BZOJ4753: [Jsoi2016]最佳团体(分数规划+树上背包)

    BZOJ4753: [Jsoi2016]最佳团体(分数规划+树上背包) 标签:题解 阅读体验 BZOJ题目链接 洛谷题目链接 具体实现 看到分数和最值,考虑分数规划 我们要求的是一个\(\dfrac{ ...

  8. JSOI 2016 扭动的字符串

    JSOI 2016 扭动的字符串 题面描述 给出两个长度为\(n\)的字符串\(A,B\) \(S(i,j,k)\)表示把\(A\)中的\([i,j]\)和\(B\)中的\([j,k]\)拼接起来的字 ...

  9. [JSOI2016]最佳团体 DFS序/树形DP

    题目 洛谷 P4322 [JSOI2016]最佳团体 Description 茜茜的舞蹈团队一共有\(N\)名候选人,这些候选人从\(1\)到\(N\)编号.方便起见,茜茜的编号是\(0\)号.每个候 ...

随机推荐

  1. HDFS文件系统基础

    HDFS架构实现 Hadoop当前稳定版本是Apache Hadoop 2.9.2,最新版本是Apache Hadoop 3.1.1. http://hadoop.apache.org/docs/ H ...

  2. Vue03

    5.组件化开发 组件[component] 在网页中实现一个功能,需要使用html定义功能的内容结构,使用css声明功能的外观样式,还要使用js来定义功能的特效,因此就产生了把一个功能相关的[HTML ...

  3. 06-matplotlib-饼状图

    import numpy as np import matplotlib.pyplot as plt ''' 饼状图显示一个数据系列中各项总和的比例: 饼状图中的数据点显示为整个饼状图的百分比: 如: ...

  4. vue项目部署流程

    用vue-cli搭建的做法1.npm run build2.把dist里的文件打包上传至服务器 例 /data/www/,我一般把index.html放在static里所以我的文件路径为:/data/ ...

  5. oAuth2.0在laravel5.2中的简单应用

    oAuth是一个关于授权的开放网络标准,目前的版本是2.0.laravel是php开发框架,目前最新稳定版本是5.5.授权在应用程序中有非常广泛的使用场景,本文将以laravel5.2为例来简单介绍o ...

  6. 随手记录-linux-Shellinabox插件

    Shellinabox 是一个利用 Ajax 技术构建的基于 Web 的远程Terminal 模拟器,也就是说安装了该软件之后,不需要开启 ssh服务,通过 Web 网页就可以对远程主机进行维护操作了 ...

  7. 团队项目开题Scrum Meeting报告

    团队项目开题Scrum Meeting报告 在10月30号星期四的晚上我们团队找到了给我们代码的王翊学长,由学长给我们讲解了他编写IOS平台上北航MOOC系统的架构和思路, 因为我们团队没有苹果公司的 ...

  8. so easy, too happy

    一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 • Estimate • 估计这个任务需要多 ...

  9. Linux基础入门--01~03

  10. 软工 · 第十二次作业 - Beta答辩总结

    福大软工 · 第十二次作业 - Beta答辩总结 写第十二次的时候操作失误直接在Beta版本的博客里改了...第七次冲刺的作业链接补在这里 Beta(7/7) 组长本次博客作业链接 项目宣传视频链接 ...