题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4753

0/1分数规划裸题。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #define db double
  6. using namespace std;
  7. const int N=;
  8. const db eps=1e-,INF=1e8;
  9. int n,k,s[N],p[N],hd[N],xnt,to[N],nxt[N],siz[N];
  10. db ans,l,r,mid,a[N],dp[N][N];
  11. int rdn()
  12. {
  13. int ret=;bool fx=;char ch=getchar();
  14. while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
  15. while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
  16. return fx?ret:-ret;
  17. }
  18. void add(int x,int y)
  19. {
  20. to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;
  21. }
  22. void dfs(int cr)
  23. {
  24. dp[cr][]=a[cr]; siz[cr]=;
  25. for(int j=;j<=k;j++) dp[cr][j]=-INF;
  26. for(int i=hd[cr],v;i;i=nxt[i])
  27. {
  28. dfs(v=to[i]);
  29. for(int j=min(k,siz[cr]+siz[v]);j>=;j--)
  30. for(int l=max(,j-siz[cr]);l<=siz[v]&&l<j;l++)
  31. dp[cr][j]=max(dp[cr][j],dp[v][l]+dp[cr][j-l]);
  32. siz[cr]+=siz[v];
  33. }
  34. }
  35. bool check()
  36. {
  37. for(int i=;i<=n;i++)
  38. a[i]=p[i]-s[i]*mid;
  39. dfs();
  40. return dp[][k]>=;
  41. }
  42. int main()
  43. {
  44. k=rdn()+; n=rdn();
  45. for(int i=,d;i<=n;i++)
  46. {
  47. s[i]=rdn(); p[i]=rdn();
  48. d=rdn(); add(d,i); r+=p[i];
  49. }
  50.  
  51. for(int i=;i<=n;i++) dp[i][]=-INF;
  52. while(r-l>eps)
  53. {
  54. mid=(l+r)/;
  55. if(check()) ans=mid,l=mid+eps;
  56. else r=mid-eps;
  57. }
  58. printf("%.3lf\n",ans);
  59. return ;
  60. }

bzoj 4753 [Jsoi2016]最佳团体——0/1分数规划的更多相关文章

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

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

  2. bzoj 4753: [Jsoi2016]最佳团体【01分数规划+二分+树上背包】

    01分数规划,二分答案然后把判别式变成Σp[i]-Σs[i]*mid>=0,然后树上背包判断,设f[i][j]为在i点子树里选j个的最大收益,随便背包一下就好 最丧病的是神卡常--转移的时候要另 ...

  3. LUOGU P4322 [JSOI2016]最佳团体(0/1分数规划+树形背包)

    传送门 解题思路 一道0/1分数规划+树上背包,两个应该都挺裸的,话说我常数为何如此之大..不吸氧洛谷过不了啊. 代码 #include<iostream> #include<cst ...

  4. BZOJ.4753.[JSOI2016]最佳团体(01分数规划 树形背包DP)

    题目链接 \(Description\) 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 \(\frac{∑pi}{∑si}\) 最大 \(Solution\) 01分数规划,然 ...

  5. BZOJ 4753 [Jsoi2016]最佳团体 ——01分数规划 树形DP

    要求比值最大,当然用分数规划. 二分答案,转化为选取一个最大的联通块使得它们的和大于0 然后我们直接DP. 复杂度$O(n^2\log {n})$ #include <map> #incl ...

  6. [Jsoi2016]最佳团体 BZOJ4753 01分数规划+树形背包/dfs序

    分析: 化简一下我们可以发现,suma*ans=sumb,那么我们考虑二分ans,之后做树形背包上做剪枝. 时间复杂度证明,By GXZlegend O(nklogans) 附上代码: #includ ...

  7. bzoj 3232 圈地游戏——0/1分数规划(或网络流)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...

  8. 【BZOJ】4753: [Jsoi2016]最佳团体 01分数规划+树上背包

    [题意]n个人,每个人有价值ai和代价bi和一个依赖对象ri<i,选择 i 时 ri 也必须选择(ri=0时不依赖),求选择k个人使得Σai/Σbi最大.n<=2500,ai,bi< ...

  9. Bzoj1486/洛谷P3199 最小圈(0/1分数规划+spfa)/(动态规划+结论)

    题面 Bzoj 洛谷 题解(0/1分数规划+spfa) 考虑\(0/1\)分数规划,设当前枚举到的答案为\(ans\) 则我们要使(其中\(\forall b_i=1\)) \[ \frac{\sum ...

随机推荐

  1. php正则表达式匹配img中任意属性的方法

    经常和图片打交道,不得不用到一些提取图片中scr.alt.title.等的属性,这里总结给大家一些常用的,感觉还不错,比较通用! PHP正则表达式匹配img中任意属性PHP 复制代码代码如下: < ...

  2. php信号处理

    pcntl pcntl_signal 信号注册函数 pcntl_alarm 指定秒数中断程序执行任务. 每次执行只会有一个定时器生效,若之前计时器还没结束就定义新定时器,会替代之前定时器并返回之前定时 ...

  3. 【WPF学习笔记】之如何把数据库里的值读取出来然后显示在页面上:动画系列之(六)(评论处有学习资料及源码)

    (应博友们的需要,在文章评论处有源码链接地址,以及WPF学习资料.工具等,希望对大家有所帮助) ...... 承接系列五 上一节讲了,已经把数据保存到数据库并且删除数据,本讲是把已经存在的数据从数据库 ...

  4. 一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬

    消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL, ...

  5. OpenCV 中的三大数据类型( 概述 )

    前言 OpenCV 提供了许多封装好了的类型,而其中,以三大类型最为核心.本文将大致介绍这三大类型. CvArr:不确定数组 它可以被视为一个抽象基类,后面的两大类型都继承此类型并扩展.只要某个函数的 ...

  6. PECL的安装和使用

    下载并安装pear脚本 cd /usr/local/php/bin/ curl -o go-pear.php http://pear.php.net/go-pear.phar ./php go-pea ...

  7. Cordova插件相关常用命令

    一,插件相关常用命令   1,查看所有已经安装的插件 1 cordova plugin ls 2,安装插件(以camera插件为例) 1 cordova plugin add cordova-plug ...

  8. [容易] A + B 问题

    题目来源:http://www.lintcode.com/zh-cn/problem/a-b-problem/

  9. 《程序员代码面试指南》第八章 数组和矩阵问题 数组的partition 调整

    题目 数组的partition 调整 java代码 package com.lizhouwei.chapter8; /** * @Description: 数组的partition 调整 * @Aut ...

  10. 怎么样写一个能告诉你npm包名字是否被占用的工具

    事情是这样的: 因为我经常会写一些npm包,但是有时候我写完一个包,npm publish 的时候却被提示说包名字被占用了,要不就改名字,要不就加scope,很无奈.npm 命令行可以通过 npm v ...