[CF793E] Gosha is hunting 题解

\(wqs\) 二分确实强悍,但是费用流还是好理解。

容易想到建立两个点 \(A,B\),表示宝贝球和超级球。那么首先要从 \(s\)\(A,B\) 分别连一条流量为 \(a/b\),费用为 \(0\) 的边。那么从 \(A,B\) 向其他每个宝贝 \(i\) 分别连一条流量为 \(1\),费用为 \(p_i/q_i\) 的边。根据逻辑,我们只需要再从每个宝贝 \(i\) 向汇点连一条流量为 \(1\),费用为 \(0\) 的边就可以了。但是这样就会忽略掉同时选宝贝球和超级球的情况。所以还需要从每个宝贝 \(i\) 处再向汇点连一条流量为 \(1\),费用为 \(-p_iq_i\) 的边。直接跑最大费用最大流即可。

时间复杂度 \(O(n^3)\),由于费用流跑得很快,可以通过。

#include<bits/stdc++.h>
using namespace std;
const int N=2005,M=1e5+5;
int n,ma,mb,s,t,k=1,mxf,h[N],lst[N];
int to[M],nx[M],vis[N],f[M],flw[N];
double w[M],mxc,q[N],p[N],dis[N];queue<int>qu;
void add(int x,int y,int v,double cs){f[++k]=v,w[k]=cs,to[k]=y,nx[k]=h[x],h[x]=k;f[++k]=0,w[k]=-cs,to[k]=x,nx[k]=h[y],h[y]=k;
}int spfa(){while(qu.size()) qu.pop();for(int i=0;i<=n+3;i++) flw[i]=0,lst[i]=-1,dis[i]=-1e9;qu.push(s),flw[s]=1e9,dis[s]=0,vis[s]=1;while(qu.size()){int x=qu.front();qu.pop(),vis[x]=0;for(int i=h[x];i;i=nx[i]){int y=to[i],v=f[i];double cs=w[i];if(dis[y]+1e-10>=dis[x]+cs||v<1) continue;flw[y]=min(flw[x],v);dis[y]=dis[x]+cs,lst[y]=i^1;if(!vis[y]) vis[y]=1,qu.push(y);}}return lst[t]>=0;
}void MCMF(){while(spfa()){mxc+=dis[t]*flw[t],mxf+=flw[t];for(int i=t;i!=s;i=to[lst[i]])f[lst[i]]+=flw[t],f[lst[i]^1]-=flw[t];}
}int main(){scanf("%d%d%d",&n,&ma,&mb),t=n+3;for(int i=1;i<=n;i++) scanf("%lf",p+i);for(int i=1;i<=n;i++) scanf("%lf",q+i);add(s,n+1,ma,0),add(s,n+2,mb,0);for(int i=1;i<=n;i++){add(n+1,i,1,p[i]),add(n+2,i,1,q[i]);add(i,t,1,0),add(i,t,1,-p[i]*q[i]);}MCMF();printf("%.10lf",mxc);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/906213.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ProfiNet转Modbus TCP协议转换网关驱动三菱PLC与伺服的毫秒级动态参数同步

一、案例背景 在“双碳”战略推动下,新能源锂电池行业迎来爆发式增长。某新能源科技公司新建的锂电池生产线中,涂布工序作为核心环节,采用了德国博世力士乐IndraDriveCX系列伺服驱动器(ProfiNet从站)实现高精度张力控制,而车间级监控系统选用三菱L系列PLC(ModbusTCP主站…

MySQL-面经

目录 MVCC概念?如何实现? 可重复读概念 可重复读下,快照是在什么时候生成的,是事务启动时,还是语句执行前 可重复读下,执行两个select语句,会生成几个快照?MVCC概念?如何实现? MVCC概念:通过「版本链」来控制并发事务访问同一个记录时的行为就叫 MVCC(多版本并发控制…

算法备案五大真相

一些开发者已经了解到算法备案是AI类产品必做的一项资质了,但因为经验有限,依然存在一些盲点和不清楚的地方。今天,我就整理出了最基础但也最重要的五大算法备案真相,供大家参考。如有其它疑问,欢迎进一步咨询算法备案办理问题。一、流程统一,审核不统一 算法备案有全国统…

Cknife配置

项目地址 https://github.com/Chora10/Cknife 使用Java编译器 这里使用eclipse 1. File->Open Project from File System...选择目录,点击完成2. 在刚添加的项目上按右键,并点击导出Export选择可运行的jar文件选择路径3. 这里没有选择或没有配置有效的“Launch configurat…

医疗场景实战:百条数据 RFT 微调盘古大模型,精度大幅提升

摘要:RFT强化微调是一种新型LLM微调方法,通过强化学习与传统微调结合,少量数据即可显著增强领域场景的模型能力。本文分享自华为云社区《医疗场景实战|百条数据RFT微调盘古大模型,效果超越DS》,作者:盘古大模型官方账号。 医疗场景实战|百条数据RFT微调盘古大模型,效果超…

SQL Server 启用 sa

Hello World ‍‍ ‍‍‍‍‍

一文看懂大数据生态圈完整知识体系

随着大数据行业的发展,大数据生态圈中相关的技术也在一直迭代进步,希望能通过本文帮助大家快速构建大数据生态圈的完整知识体系。 目前大数据生态圈中的核心技术总结下来如图1所示,分为以下9类,下面分别介绍。大数据生态下9类核心技术 01 数据采集技术框架 数据采集也被称为…

神秘另解集合,想出来一样的东西这辈子有了

P1600 考虑重链剖分。然后把每个路径给变成 \(O(\log n)\) 个重链,根据重链剖分的性质,每条重链的 dfs 序都为连续,所以把图画出来大概是像下图这样:横轴是时间,纵轴是 dfs 序。一个时间 \(t\) 在节点 \(p\) 的人数就是经过 \((t,\text{dfn}_p)\) 的线段数量。线段数量为 …

功率器件热设计基础(十三)——使用热系数Ψth(j-top)获取结温信息

功率半导体热设计是实现IGBT、碳化硅SiC高功率密度的基础,只有掌握功率半导体的热设计基础知识,才能完成精确热设计,提高功率器件的利用率,降低系统成本,并保证系统的可靠性。。。**前言 ** 功率半导体热设计是实现IGBT、碳化硅SiC高功率密度的基础,只有掌握功率半导体的…

Nmap学习笔记

Nmap学习笔记 九步:Enumerate targets 列出目标 Discover live hosts 发现活动主机 Reverse-DNS lookup 反向 DNS 查询 Scan Ports 端口扫描 Detect versions 版本侦测 Detect OS 系统侦测 Traceroute 路由追踪 Scripts 脚本 Write output 输出Nmap Live Host Discovery---存…

postman 免登录使用

取消Help下面的所有勾选 重启即可I have a dream : Sandy beach B-J-N.

不同板卡间的同步序列出峰问题

简述 使用两块不同板卡,对前导ZC序列一收一发,在接收板上做本地相关,相关结果显示相关性有延迟,目前推测为射频滤波器问题。 异常情况 目前有一套FMQL45T900+CX9261s的板卡,运行OFDM波形进行灵敏度测试。由于只有一套,且收发隔离度仅有约50dB,导致无法在自回环的情况下进…