博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ3571 : [Hnoi2014]画框
阅读量:6978 次
发布时间:2019-06-27

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

题目是要求最小乘积最小权匹配,

将一种方案看做一个二维点(x,y),x=a值的和,y=b值的和,所有方案中只有在下凸壳上的点才有可能成为最优解

首先要求出两端的方案l,r两个点

l就是a值的和最小的方案,

r就是b值的和最小的方案

然后递归work(l,r)即可得出所有在下凸壳上的点

work(l,r){

  找到一个离lr这条直线最远的且靠近原点的点mid

  如果l,mid,r构成下凸壳{

    work(l,mid)

    work(mid,r)

  }

}

如何找mid?

把所有边边权设为(a[i],b[i])它lr直线垂线上的投影,再求普通的最小权匹配即可。

 

#include
#include
#include
using namespace std;const int inf=~0U>>2,N=150,M=100110;struct P{int x,y;P(){x=y=0;}P(int _x,int _y){x=_x,y=_y;}P operator-(const P&a){return P(x-a.x,y-a.y);}}L,R;inline int cross(P a,P b){return a.x*b.y-a.y*b.x;}int n,m,i,j,w[N][N],wa[N][N],wb[N][N],test,ans;int u[M],v[M],c[M],co[M],coa[M],cob[M],nxt[M],t,S,T,l,r,q[M],g[N],f[N],d[N];bool in[N];inline void add(int x,int y,int z,int zo,int zoa,int zob){ u[++t]=x;v[t]=y;c[t]=z;co[t]=zo;coa[t]=zoa;cob[t]=zob;nxt[t]=g[x];g[x]=t; u[++t]=y;v[t]=x;c[t]=0;co[t]=-zo;coa[t]=-zoa;cob[t]=-zob;nxt[t]=g[y];g[y]=t;}inline bool spfa(){ memset(d,127,sizeof d);d[S]=0;in[S]=1;l=r=M>>1;q[l]=S; int x,i; while(l<=r){ int x=q[l++]; if(x==T)continue; for(i=g[x];i;i=nxt[i])if(c[i]&&co[i]+d[x]
0)work(l,mid),work(mid,r);}int solve(){ ans=~0U>>1; scanf("%d",&n); for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%d",&wa[i][j]); for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%d",&wb[i][j]); for(i=1;i<=n;i++)for(j=1;j<=n;j++)w[i][j]=wa[i][j]; L=mincostflow(); for(i=1;i<=n;i++)for(j=1;j<=n;j++)w[i][j]=wb[i][j]; R=mincostflow(); work(L,R); printf("%d\n",ans);}int main(){ scanf("%d",&test); while(test--)solve(); return 0;}

  

 

转载地址:http://ooupl.baihongyu.com/

你可能感兴趣的文章
.NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
查看>>
C# 格式串(收藏)
查看>>
浅谈SQL Server中统计对于查询的影响
查看>>
WF4 Beta,RC版文章总结
查看>>
WPF 与Surface 2.0 SDK 亲密接触–LibraryContainer 篇
查看>>
C# 对应 Oracle 存储过程 的 SYS_REFCURSOR 应该 传入什么类型的参数?
查看>>
Unity3D移植到自己的Android程序
查看>>
【转】用示例说明索引数据块中出现热块的场景,并给出解决方案
查看>>
HDU 2034 人见人爱A-B
查看>>
【AngularJS】—— 12 独立作用域
查看>>
使用工作集(Working Set)整理项目
查看>>
MailMail、RegeX等程序的云端版
查看>>
[Erlang 0072] Erlang XML处理解决方案
查看>>
从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
查看>>
mmap学习
查看>>
X3D中Profile如何翻译
查看>>
7.14. revision
查看>>
第 175 章 Open Source Requirements Management Tool
查看>>
CentOS7安装配置redis-3.0.0
查看>>
SQL server 专业词汇
查看>>