题意

传送门

有 \(a+b+1\) 个会动的棋子,在一个大小为 \(n\times m\) 的棋盘上,棋盘上有一些点有障碍。棋子中,有 \(a\) 个红色棋子,\(b\) 个蓝色棋子,和 \(1\) 个既能当作红棋子又能当作蓝棋子的通配棋子。

一个局面是好的,当且仅当对于每个格子,要么这个格子上没有棋子,要么这个格子上恰好存在一个红棋子与一个蓝棋子。

每个棋子有自己的初始位置 \((x_i,y_i)\) 和速度 \(t_i\),其中 \(t_i\) 表示自己走到相邻的格子所需要的时间。

你可以控制所有棋子的移动。请问最少多少时间后能达到处于一个好的局面。或输出无解。

\(1 \le n,m \le 22,0 \le a,b \le n \times m,1 \le t_i \le 10^9\)。

题解

首先 \(|a-b|=1\),否则无解。然后就变成 \(k\) 个红棋子与 \(k\) 个蓝棋子。

乍一看是二分图匹配。但实际上每个格子只能容纳一对棋子,故不能直接套用。

类似二分图,我们不难想到用网络流来解决这种匹配问题。因为每个棋子到任意格子的距离是已知的,故尝试二分答案。

首先将每个格子拆为入点和出点,其间连一条边。依次考虑红棋子 \(i\) 与格子 \(j\),如果 \(i\) 到 \(j\) 的时间不大于当前二分的 \(mid\),则从 \(i\) 连一条边到 \(j\) 的入点。同理,如果蓝棋子 \(i\) 到格子 \(j\) 的时间不大于 \(mid\),则从 \(j\) 的出点连一条边到 \(i\)。再从源点到所有红棋子连边,从所有蓝棋子到汇点连边。所有边的容量均为 \(1\)。跑最大流,判断其是否等于 \(k\) 即可。

这种做法的时间复杂度为 \(O(n^6 \log a)\),其中 \(a\) 为最大时间。显然不能通过。

发现瓶颈在于二分答案。因为网络流有一个很好的性质:往网络中加边,不必重构网络,直接跑就可以得出新的最大流。于是尝试另一种方式:对于所有连接棋子与格子的边,按照其时间从小到大加入。每加一条边跑一次最大流。则当最大流等于 \(k\) 时,加入的边的时间就是答案。复杂度为 \(O(n^4 \times n^4)=O(n^8)\)。

这样就有新的优化空间了。考虑将边分块:设有 \(t\) 条边,每 \(\sqrt t\) 条分为一组。每次加入一组并跑最大流。当最大流等于 \(k\) 时,再将这组的边重新一条条加入。这样的复杂度为 \(O(\sqrt{n^4} \times n^4)=O(n^6)\)。可以通过。

但实际上因为大常数,你还是会 TLE on test 87。解决办法是卡常,或者像我一样:分块套分块。设一个阈值 \(\alpha\),先将块长设为 \(t^{\alpha}\),等最大流等于 \(k\) 时,再将当前块分块,块长为 \(\displaystyle t^{\alpha^2}\)。则复杂度为 \(\displaystyle O((t^{1-\alpha}+t^{\alpha(1-\alpha)}+t^{\alpha^2})\times n^4)\),易知 \(\alpha=\frac{\sqrt5-1}{2}\),化简一下就是 \(n^{5.528}\)。可以通过。

CF513F2 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. js获取的 后端的列表。

    1.引号被转码 处理办法 {% autoescape off %} var tmp = '{{ data1 }}'; var tmp = '{{ data2 }}'; {% endautoescape ...

  2. JavaScript项目榜单

    JavaScript项目榜单 参考资料 2022年最受欢迎的JavaScript项目榜单出炉 Best of JS 正式公布 2022 年 JavaScript 明星项目榜单 该榜单提供了过去 12 ...

  3. Mybaties中的报错 Tag name expected解决

    有些时候一些小小的报错可能会没有注意到,等到报错的时候才发现,一个小小的细节也是很重要的,毕竟我们是bug生产员 来看报错的代码 when round((UNIX_TIMESTAMP(DATE_ADD ...

  4. “const char*“类型的实参与“LPCWSTR-类型的形参不兼容

    const char *类型的实参与LPCWSTR类型的形参不兼容解决 LPCWSTR类型是是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型(4字节,Unicode编码宽字节 ...

  5. Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)【QQ】

    前一篇已经比较详细讲述了如何使用Selenium RC进行Web测试,但到底Selenium RC是什么?或者它由哪几部分组成呢?? 一.Selenium RC的组成: 关于这个问题,我拿了官网上的一 ...

  6. hexo博客重新部署

    date: 2020-08-04 updated: 2020-12-31 summary: 博客重新部署到国内Gitee(加速访问速度) hexo博客重新部署(从GitHub到Gitee) (博客迁移 ...

  7. 最简spring IOC实现

    public class Main { public static void main(String[] args) throws Exception { Class<Address> a ...

  8. vue3 门户网站搭建5-图标

    奈何 element 自带的图标太少,不够用,故打算使用 vite-plugin-svg-icons 组件来封装 svg-icon . ps: ui 框架选用的 element-ui,为了能跟 vue ...

  9. RocketMQ 如何保证消息不丢失,重复消费

    RocketMQ 如何保证消息不丢失 Producer 提供SYNC的发送消息方式,等待broker处理结果. 发送消息如果失败或者超时,则重新发送. // 同步发送消息,如果5秒内没有发送成功,则重 ...

  10. H3C交换机基本操作

    Console口登录配置 1.无认证登录console <H3C>system-view [H3C]user-interface aux 0 // 进入AUX用户界面 [H3C-line- ...