博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[cogs2652]秘术「天文密葬法」
阅读量:7077 次
发布时间:2019-06-28

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

题意:就是每个点有权值\(a_i,b_i\),选出一条长为\(m\)的路径(这里的长指的是路径点数),并最小化\(\frac{\sum a_i}{\sum b_i}\)

先膜一下

首先这显然是个分数规划,我们二分一个答案\(mid\),判断\(\frac{\sum a_i}{\sum b_i}\leq mid\),即\(\sum a_i-mid\sum b_i\leq 0\)

后面这个显然可以dp,记\(f[u][j]\)表示从\(u\)往下的长度为\(j\)的链中最小的权值是多少,很明显可以\(O(n^2)\)转移

考虑如何优化,用长链剖分,每个节点继承它重儿子的信息,轻儿子的信息直接暴力合并

不知道什么是长链剖分的可以看看蒟蒻的

不过因为每个节点继承它重儿子的信息后要全部加上自己的值,所以可以每个点开一个变量来表示加了多少

//minamoto#include
#define eps 1e-3using namespace std;#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)char buf[1<<21],*p1=buf,*p2=buf;int read(){ int res,f=1;char ch; while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1); for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0'); return res*f;}const int N=2e5+5;int head[N],Next[N<<1],ver[N<<1],tot;inline void add(int u,int v){ver[++tot]=v,Next[tot]=head[u],head[u]=tot;}int n,m,a[N],b[N],len[N],son[N];double val[N],tmp[N],*f[N],*id=tmp,ans=1e18,l,r,mid;void dfs(int u,int fa){ for(int i=head[u];i;i=Next[i])if(ver[i]!=fa){ dfs(ver[i],u); if(len[ver[i]]>len[son[u]])son[u]=ver[i]; } len[u]=len[son[u]]+1;}void dp(int u,int fa){ val[u]=a[u]-mid*b[u],f[u][0]=0; if(son[u])f[son[u]]=f[u]+1,dp(son[u],u),val[u]+=val[son[u]],f[u][0]-=val[son[u]]; for(int i=head[u];i;i=Next[i]){ int v=ver[i];if(v==fa||v==son[u])continue; f[v]=id,id+=len[v],dp(v,u); for(int j=0;j
eps){ mid=(l+r)/2; memset(tmp,0x7f,sizeof(tmp)),ans=1e18; id=tmp,f[1]=id,id+=len[1],dp(1,0); if(ans>=0)l=mid;else r=mid; } if(l>=200000)puts("-1");else printf("%.2lf\n",l); return 0;}

转载于:https://www.cnblogs.com/bztMinamoto/p/9948716.html

你可能感兴趣的文章
度量快速开发平台中DataTable.Select的一些其他用法
查看>>
关于Nginx的一些优化(突破十万并发)
查看>>
com.dyuproject.protostuff.ProtobufException: Protocol message contained an inval
查看>>
我的友情链接
查看>>
搭建Hadoop2.7.3+Hive2.1.1及MySQL(配置Hive)(三)
查看>>
O`Reilly FreeBook:数据湖构架 简介
查看>>
FastDFS集群tracker实现负载均衡
查看>>
12日志文件分析
查看>>
排序算法之冒泡排序
查看>>
Apache和php的关系
查看>>
reset master和reset slave命令解析和区别
查看>>
【转】web.xml标签
查看>>
如何诊断服务器异常行为
查看>>
python3 django-admin 初始化后台管理项目(mysql)
查看>>
我的友情链接
查看>>
利用ZRM(lvm+binlog方式)进行数据库备份及还原
查看>>
Xenserver7宿主机使用yum安装zabbix客户端
查看>>
HLSL学习实践记录: RenderMonkey实现(一):显示出模型和贴图
查看>>
Oracle Study之--Oracle 11gR2 RAC crs启动故障
查看>>
LeetCode:Ugly Number II - 丑数2:找出第n个丑数
查看>>