Description

平面中有\(n\)个黑点和\(n\)个白点。这些点组成\(n\)对,但是你不知道它们的对应关系。若某队中黑点白点距离\(<R\),则它是好的;\(>R\)则不是好的;\(=R\)的时候可好可不好。已知有\(k\)对是好的,求\(R\)的最大值和最小值。

Solution

首先解决对称的问题:给定\(R\),求\(k\)的最大值和最小值。

求\(k\)的最大值可以二分图匹配:所有\(\leqslant R\)的可以构成一对。

求最小值同样可以二分图匹配:所有\(\geqslant R\)的可以构成一对(不好的一对);令不好的尽量多即可。

可以发现当\(R\)增大时\(k_{max}\)和\(k_{min}\)都是不减的。所以二分\(R\)即可。

Code

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
const int N = 55;
int X[N], Y[N], x[N], y[N];
int n, K, R;
inline int sqr(int x) { return x * x; }
bool check(int i, int j, bool max) {
int l = sqr(X[i] - x[j]) + sqr(Y[i] - y[j]);
return max ? l >= R : l <= R;
}
int my[N];
bool vis[N];
bool dfs(int x, bool max) {
for (int y = 1; y <= n; ++y) if (!vis[y]) {
bool l = check(x, y, max);
if (!l) continue;
vis[y] = true;
if (!my[y] || dfs(my[y], max)) {
my[y] = x;
return true;
}
}
return false;
}
bool check(int mid, bool max) {
R = mid;
memset(my, 0, sizeof my);
int ans = 0;
for (int x = 1; x <= n; ++x) {
memset(vis, 0, sizeof vis);
if (dfs(x, max)) ++ans;
}
return max ? n - ans <= K : ans >= K;
}
int main() {
scanf("%d%d", &n, &K);
for (int i = 1; i <= n; ++i) scanf("%d%d", &X[i], &Y[i]);
for (int i = 1; i <= n; ++i) scanf("%d%d", &x[i], &y[i]);
int l = 0, r = 10000000;
while (l < r) {
int mid = (l + r) / 2;
if (check(mid, false)) r = mid;
else l = mid + 1;
}
printf("%.2lf ", sqrt(l));
if (K == n) { puts("+INF"); return 0; }
l = 0, r = 10000000;
while (l < r) {
int mid = r + (l - r) / 2;
if (check(mid, true)) l = mid;
else r = mid - 1;
}
printf("%.2lf\n", sqrt(l));
return 0;
}

BZOJ2663 [Beijing wc2012]灵魂宝石的更多相关文章

  1. bzoj2663: [Beijing wc2012]灵魂宝石(二分+匈牙利)

    2663: [Beijing wc2012]灵魂宝石 题目:传送门 题解: 又是一道卡精度的题目. 很容易就可以看出单调性啊,如果R越大,选的人就越多,R越小,选的人就越少. 那最小值就直接搞咯. 那 ...

  2. BZOJ 2663: [Beijing wc2012]灵魂宝石

    2663: [Beijing wc2012]灵魂宝石 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 261  Solved: 108[Submit][S ...

  3. bzoj 2659: [Beijing wc2012]算不出的算式

    2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MB Description 算不出的算式背景:曾经有一个老掉牙的游 ...

  4. BZOJ 2661: [BeiJing wc2012]连连看 费用流

    2661: [BeiJing wc2012]连连看 Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭 ...

  5. BZOJ2661: [BeiJing wc2012]连连看

    2661: [BeiJing wc2012]连连看 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 483  Solved: 200[Submit][S ...

  6. Bzoj 2662: [BeiJing wc2012]冻结 dijkstra,堆,分层图,最短路

    2662: [BeiJing wc2012]冻结 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 647  Solved: 348[Submit][Sta ...

  7. BZOJ2659: [Beijing wc2012]算不出的算式

    2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 668  Solved: 366[Submit] ...

  8. BZOJ 2662: [BeiJing wc2012]冻结(最短路)

    这道题和 BZOJ 2763飞行路线 几乎一模一样..然后飞行路线我是1A,这道题WA了4次,我开始怀疑我的智商了.. ---------------------------------------- ...

  9. 2659: [Beijing wc2012]算不出的算式

    2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 757  Solved: 425[Submit] ...

随机推荐

  1. RabbitMQ交换机规则实例

    RabbitMQ Exchange分发消息时根据类型的不同分发策略有区别,目前共四种类型:direct.fanout.topic.headers .headers 匹配 AMQP 消息的 header ...

  2. WEB-INFO 目录

    WEB-INF下面的内容都是只能由服务器级别才能访问,客户端并不能访问. 转发就是服务器级别,浏览器的地址不会变,因为,客户端发送一个请求,服务器受理之后,发现要请求内容还要再去别的请求,那么转发就是 ...

  3. node 本地静态服务器

    直接上代码 const connect = require("connect"); const serveStatic = require("serve-static&q ...

  4. tensorflow初次接触记录,我用python写的tensorflow第一个模型

    tensorflow初次接触记录,我用python写的tensorflow第一个模型 刚用python写的tensorflow机器学习代码,训练60000张手写文字图片,多层神经网络学习拟合17000 ...

  5. CentOS 安装Scrapy

    本文python版本是python3.5.3,关于升级python和安装pip请到:http://www.cnblogs.com/technologylife/p/6242115.html 安装相关包 ...

  6. 批处理 安装、卸载 window service

    注意:安装中调用了卸载的bat,安装之前先卸载...PS:可以删除 安装代码: @echo off set filename=LXServer.exe set servicename=Service1 ...

  7. VUE之文字跑马灯效果

    VUE之文字跑马灯效果 1.效果演示 2.相关代码 <!DOCTYPE html> <html lang="en"> <head> <me ...

  8. Android中实时预览UI和编写UI的各种技巧

    一.啰嗦 之前有读者反馈说,你搞这个所谓的最佳实践,每篇文章最后就给了一个库,感觉不是很高大上.其实,我在写这个系列之初就有想过这个问题.我的目的是:给出最实用的库来帮助我们开发,并且尽可能地说明这个 ...

  9. bug、兼容性、适配问题

    1.input   type=“number” 在火狐上限制长度会有问题: 1.maxlength 不管用 2.正则或js匹配限制长度后,给这个input赋值时候末尾三位(有可能是几位,我遇到的是三位 ...

  10. 问题记录 | PyLint not recognizing cv2 members

    问题记录 | PyLint not recognizing cv2 members VScode中安装了pylint,总是提示cv2的一些成员函数找不到, 如这样的问题: Module 'cv2' h ...