想出的一道题竟然是原题QAQ

非常有趣的一个题

根据三角形两边之和大于第三边 所以相交的线段一定是比不相交的线段要长的

所以直接二分图构图 最小费用最大流即可

(我不管我不管我要把这个出到NOIP膜你赛)

代码如下。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define inf 20021225
#define ll long long
#define db double
#define mxn 400
#define eps 1e-6
using namespace std; struct edge{int to,lt,f,fr;db c;}e[mxn*mxn];
struct point{int x,y;}p[mxn];
int in[mxn],from[mxn],cnt=1,nn,s,t,n,m;
db dis[mxn],ans;bool vis[mxn];
void add(int x,int y,int f,db c)
{
e[++cnt].to=y;e[cnt].lt=in[x];e[cnt].f=f;e[cnt].fr=x;e[cnt].c=c;in[x]=cnt;
e[++cnt].to=x;e[cnt].lt=in[y];e[cnt].f=0;e[cnt].fr=y;e[cnt].c=-c;in[y]=cnt;
}
queue<int> que;
bool spfa()
{
for(int i=1;i<=nn;i++) dis[i]=inf,vis[i]=0;
vis[s]=1;dis[s]=0.0;que.push(s);
while(!que.empty())
{
int x=que.front();que.pop();vis[x]=0;
//printf("%d ",x);
for(int i=in[x];i;i=e[i].lt)
{
int y=e[i].to;
if(e[i].f&&dis[y]>dis[x]+e[i].c)
{
dis[y]=dis[x]+e[i].c;
from[y]=i;
if(!vis[y]) que.push(y),vis[y]=1;
}
}
}
//printf("%lf %lf\n",dis[t],inf+eps);
return dis[t]<inf-eps;
}
db flow()
{
int flow=inf;
for(int i=t;i!=s;i=e[from[i]].fr) flow=min(flow,e[from[i]].f);
for(int i=t;i!=s;i=e[from[i]].fr) e[from[i]].f-=flow,e[from[i]^1].f+=flow;
return flow*dis[t];
}
void dinic()
{
while(spfa()) ans+=flow();
}
db dist(point a,point b)
{
return sqrt((db)(a.x-b.x)*(a.x-b.x)+(db)(a.y-b.y)*(a.y-b.y));
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
cnt=1;memset(in,0,sizeof(in));
s=n*2+1;t=s+1;nn=t;
for(int i=1;i<=2*n;i++) scanf("%d%d",&p[i].x,&p[i].y);
for(int i=1;i<=n;i++) add(s,i,1,0),add(i+n,t,1,0);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
add(i,j+n,1,dist(p[i],p[j+n]));
dinic();
for(int i=1;i<=n;i++)
for(int j=in[i];j;j=e[j].lt)
if(!e[j].f)
{
printf("%d\n",e[j].to-n);
break;
}
}
return 0;
}

UVA1411 Ants的更多相关文章

  1. UVaLive4043 UVa1411 Ants 巨人与鬼

    题意:给出平面上n个白点n个黑点,要求两两配对,且配对所连线段没有交点. 法一:暴力 随机一个初始方案,枚举任意两条线段如果有交点就改一下. 效率其实挺好的. 法二:二分图最佳完美匹配 显然没有交点的 ...

  2. 【题解】Luogu UVA1411 Ants

    原题传送门 博客里对二分图匹配的详细介绍 这道题是带权二分图匹配 用的是KM算法 我们要知道一个定理:要使线段没有相交,要使距离总和最小 我们先把任意一对白点.黑点的距离算一下 然后运用KM算法 因为 ...

  3. 使用ANTS Performance Profiler&ANTS Memory Profiler工具分析IIS进程内存和CPU占用过高问题

    一.前言 最近一段时间,网站经常出现两个问题: 1.内存占用率一点点增高,直到将服务器内存占满. 2.访问某个页面时,页面响应过慢,CPU居高不下. 初步判断内存一点点增多可能是因为有未释放的资源一直 ...

  4. poj1852 Ants ——想法题、水题

    求最短时间和最长时间. 当两个蚂蚁相遇的时候,可以看做两个蚂蚁穿过,对结果没有影响.O(N)的复杂度 c++版: #include <cstdio> #define min(a, b) ( ...

  5. Uva10881 Piotr's Ants

    蚂蚁相撞会各自回头.←可以等效成对穿而过,这样移动距离就很好算了. 末状态蚂蚁的顺序和初状态其实是相同的. 那么剩下的就是记录每只蚂蚁的标号,模拟即可. /*by SilverN*/ #include ...

  6. [ACM_模拟] UVA 10881 Piotr's Ants[蚂蚁移动 数组映射 排序技巧]

    "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one ...

  7. .NET性能调优之一:ANTS Performance Profiler的使用

    .NET性能调优系列文章 系列文章索引 .NET性能调优之一:ANTS Performance Profiler的使用 .NET性能调优之二:使用Visual Studio进行代码度量 .NET性能调 ...

  8. [CareerCup] 7.2 Ants on Polygon 多边形上的蚂蚁

    7.2 There are three ants on different vertices of a triangle. What is the probability of collision ( ...

  9. Uva---10881 Piotr's Ants(蚂蚁)

    Problem DPiotr's AntsTime Limit: 2 seconds "One thing is for certain: there is no stopping them ...

随机推荐

  1. php 从7.0升级到7.2

    下面的方法安装的php是非线程安全的,apache2服务器用不了 1. 添加Ondřej Surý提供的PHP源: sudo apt-get install software-properties-c ...

  2. jsonp跨域获取数据实现百度搜索

    本菜鸡最近在写某个页面请求数据时,报了如下的错误. Failed to load https://...:No 'Access-Control-Allow-Origin' header is pres ...

  3. vs2005下opengl(glut)的配置记录

    摘自:http://blog.csdn.net/joeblackzqq/article/details/6956959 首先参考了网上的安装配置环境部分:http://blog.csdn.net/Id ...

  4. springboot+jsp项目实例(第二弹)(成功)

    1.创建spring boot项目,使用idea自带的spring initializr创建Spring boot的maven项目(我是先创建了一个空的项目). 开始创建Spring boot项目,点 ...

  5. Debian取消从光盘安装软件的方式(please insert the disc labeled)

    与Ubuntu不同,使用apt-get install packages时Debian可能会提示: Media change: please insert the disc labeled 'Debi ...

  6. 如何使用Keka for Mac提取受密码保护的文件?用Keka提取文件的格式

    如何使用Keka for Mac提取受密码保护的文件?keka Mac是很多人喜欢的压缩解压工具,以小巧,使用简单,界面简洁受到很多Mac用户的喜欢,你还可以使用它提取文件,下面我们就来介绍一下关于用 ...

  7. ceph优化记录 ceph.conf优化详解

    https://cloud.tencent.com/developer/article/1173069 记录一下一些ceph优化的设置,部分内容来自网络,有些请根据自己需求相应修改 1.  Kerne ...

  8. Python基础教程(017)--执行Python的方式解释器运行及其他几种解释器简介

    前言 了解Python的解释器 内容 Python的解释器乳交有多个语言的实现 cPython---官方版本的C语言实现 Jython--可以运行在java平台 IronPython--可以运行在.n ...

  9. 基于Socket和OpenCV的实时视频传输

    https://blog.csdn.net/pengz0807/article/details/52204475

  10. win7NVIDIA显卡驱动升级时卡住

    可以先装上.NET framework,再更新就不会卡了