博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4753:[JSOI2016]最佳团体——题解
阅读量:5815 次
发布时间:2019-06-18

本文共 1783 字,大约阅读时间需要 5 分钟。

JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号。方便起见,JYY的编号是0号。每个候选人都由一位
编号比他小的候选人Ri推荐。如果Ri=0则说明这个候选人是JYY自己看上的。为了保证团队的和谐,JYY需要保证,
如果招募了候选人i,那么候选人Ri"也一定需要在团队中。当然了,JYY自己总是在团队里的。每一个候选人都有
一个战斗值Pi",也有一个招募费用Si"。JYY希望招募K个候选人(JYY自己不算),组成一个性价比最高的团队。
也就是,这K个被JYY选择的候选人的总战斗值与总招募总费用的比值最大。

01分数规划裸题,二分答案w,每个点点权为p[i]-w*s[i],判断最大值是否>0即可。

显然是树型背包问题,由于看不懂什么神奇的刷表法,我还是写的复杂度我不会证的dfs。

于是我人傻自带大常数硬生生把傻逼题写成神题……

#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;typedef double dl;const int INF=1e7;const int N=2505;inline int read(){ int X=0,w=0;char ch=0; while(!isdigit(ch)){w|=ch=='-';ch=getchar();} while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X;}struct node{ int to,nxt;}e[N*2];int cnt,k,n,s[N],p[N],head[N],sz[N];dl dp[N][N],w[N];inline int add(int u,int v){ e[++cnt].to=v;e[cnt].nxt=head[u];head[u]=cnt;}void dfs(int u){ for(int i=0;i<=k;i++)dp[u][i]=-INF; if(u)dp[u][1]=w[u],sz[u]=1; else dp[u][0]=0,sz[u]=0; for(int i=head[u];i;i=e[i].nxt){ int v=e[i].to;dfs(v); int len=u?1:0; for(int j=min(k,sz[u]);j>=len;j--) for(int l=1;l<=min(k-j,sz[v]);l++) dp[u][j+l]=max(dp[u][j+l],dp[u][j]+dp[v][l]); sz[u]+=sz[v]; }}bool pan(dl W){ for(int i=1;i<=n;i++)w[i]=(dl)p[i]-W*s[i]; dfs(0); return dp[0][k]>0;}int main(){ k=read(),n=read(); for(int i=1;i<=n;i++){ s[i]=read(),p[i]=read(); add(read(),i); } dl l=0,r=1e4; for(int i=1;i<=30;i++){ dl mid=(l+r)/2; if(pan(mid))l=mid; else r=mid; } printf("%.3lf\n",l); return 0;}

+++++++++++++++++++++++++++++++++++++++++++

+本文作者:luyouqi233。               +

+欢迎访问我的博客:+

+++++++++++++++++++++++++++++++++++++++++++

转载于:https://www.cnblogs.com/luyouqi233/p/9165379.html

你可能感兴趣的文章
微服务架构会和分布式单体架构高度重合吗
查看>>
《The Age of Surge》作者访谈
查看>>
测试人员的GitHub
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
有关GitHub仓库分支的几个问题
查看>>
无服务器计算的黑暗面:程序移植没那么容易
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Kali linux virtualbox rc=1908 错误解决办法
查看>>
linux软件包管理之三(源代码安装)
查看>>
数据库三范式是什么?
查看>>
[转载]设置Ubuntu自动连接无线,无须再输入密钥环和无线密码
查看>>
九叔Xen App测试报告
查看>>
Apache配置
查看>>
Ext gridPanel 单元格数据的渲染
查看>>
Android SDK 的下载代理
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>