E

首先问题可以转化为:每次将出口带着边界走,出了边界的机器人立马消失,最大化出口碰到的机器人数量。

考虑哪些机器人是已经出界了的,不难有观察:

  • 当前出界的机器人只与当前出口往四个方向走过的最远距离有关。

下面令往上下左右分别 至多 走了 \(u, d, l, r\) 步,那么当前已经出界的机器人如下图所示(红色部分):

于是自然的想法是令 \(f_{u, d, l, r}\) 表示当前机器人往上下左右至多走了 \(u, d, l, r\) 步后能碰到的最多机器人数。

转移只需要考虑往四个方向多扩展一步即可,显然能扩展得到的机器人都要全部碰到最优,复杂度 \(\mathcal{O}(n ^ 4)\)。

F

首先考虑树的情况。

这个问题直接做无法下手,也无法得到有效的观察,考虑转化该问题。

回想曾遇到过的 两色模型,同时注意到树是一个二分图,每次操作的两个点一定在二分图上的两部,感觉很有前途,于是不妨将问题往二分图上转化。

首先将这颗树进行黑白染色,于是每次操作可以转化为:在两部选择一对有边相接且颜色不同的点 \((u, v)\),将两者颜色翻转,求最少的次数使得两部颜色全部翻转。

两部点对 \((u, v)\) 颜色不同当且仅当被操作的次数奇偶性相同等价于原问题上颜色相同。

于是这个问题有解就存在一个必要条件:两部的大小相等,于是先把不等的情况判掉。

此时发现这个问题还是不好解决,考虑进一步转化这个问题。

注意到每次涉及到交换的两点必定一白一黑,于是交换操作可以视作是一个黑点往相邻的白点移动。

因此问题可以等价于:二分图上左部上每个点有一个黑子,右部上每个点是空的,黑子可以向一个空点移动,问左部黑子全部移动到右部的最小代价。

于此同时,我们注意到所有黑子都是等价的,因此如果黑子想要越过黑子可以 调整 为将当前黑子和越过的黑子整体向前进的方向平移一位,因此 黑子每次必须移动到空点的限制就去除了(一个点上可以有多个黑子)。

于是现在的问题可以再次被转化为:在黑子和空点之间匹配,两点匹配的代价是在树上的距离,最小化匹配的代价。

答案考虑每条边的贡献,显然是黑子比空点多的一边需要经过这条边,且下界显然是可以达到的,于是树的情况就解决了。


接下来考虑基环树的情况,因为树的做法需要依赖于二分图的性质,因此我们还需分环的奇偶性讨论。

首先来考虑偶环的情况,此时依然满足二分图的性质。

继续考虑每条边对答案的贡献,容易发现树边贡献不变。

对于环上的边,注意到黑子与白点匹配时一定不存在某条边在匹配路径上被双向经过,因此我们先给环上的边定向,经过次数的符号代表环在匹配路径上的方向。

容易发现相邻两边的差值是确定的,因为中间点子树内需要的黑点数量(带符号)确定。

除此之外并无其他限制,具体地,我们令环上的边经过次数分别为 \(x_1 \sim x_k\)(钦定环方向 \(i \to i + 1, k \to 1\)),环上点子树内需要黑点数量分别为 \(d_1 \sim d_k\),那么有:

\[\begin{cases}
x_k - x_1 = d_1 \\
x_1 - x_2 = d_2 \\
\ \ \vdots \\
x_{k - 1} - x_k = d_k
\end{cases}
\]

这是一个 经典问题,容易注意到 \(x_{2 \sim k}\) 能被 \(x_1\) 线性表出,因此最终最小化的函数可以形式化描述为(其中 \(c\) 序列均为常数):

\[\sum\limits_{i = 1} ^ k |x_1 - c_i|
\]

这也是一个经典问题,选取 \(c\) 的中位数即可。


对于奇环的情况,相当于是在同部之间加上了一条边,考虑修改最初始的转化。

对于不同部的点依然是颜色不同才可以交换颜色,对于同部点只能是颜色相同才可以交换颜色。

以下不妨令同部点在左部,且标号为 \(x, y\)。

注意到每次 \(x, y\) 只能将两个空点生成两个黑点,或将两个黑点吞掉变成两个空点。

因此此时问题有解存在必要条件:两部点的数量奇偶性相同。

于此同时,注意到此时同样满足黑点自由移动的调整,因此我们可以一开始就将缺失 / 多余的黑点生成,于是问题就转化为树的带权情况。

不难发现解决方法是一样的,因此这题就做完了,容易发现每一步复杂度均为 \(\mathcal{O}(n)\)。

AGC004 部分简要题解的更多相关文章

  1. Noip 2014酱油记+简要题解

    好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...

  2. Tsinghua 2018 DSA PA2简要题解

    反正没时间写,先把简要题解(嘴巴A题)都给他写了记录一下. upd:任务倒是完成了,我也自闭了. CST2018 2-1 Meteorites: 乘法版的石子合并,堆 + 高精度. 写起来有点烦貌似. ...

  3. Codeforces 863 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 简要题解?因为最后一题太毒不想写了所以其实是部分题解... A题 传送门 题意简述:给你一个数,问你能不能通过加前导000使其成为一个回文数 ...

  4. HNOI2018简要题解

    HNOI2018简要题解 D1T1 寻宝游戏 题意 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为 ...

  5. JXOI2018简要题解

    JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法 ...

  6. BJOI2018简要题解

    BJOI2018简要题解 D1T1 二进制 题意 pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是 \(3\) 的倍数.他想研究对于二进制,是否也有类似的性质. 于是他生 ...

  7. CQOI2018简要题解

    CQOI2018简要题解 D1T1 破解 D-H 协议 题意 Diffie-Hellman 密钥交换协议是一种简单有效的密钥交换方法.它可以让通讯双方在没有事先约定密钥(密码)的情况下,通过不安全的信 ...

  8. AtCoder ExaWizards 2019 简要题解

    AtCoder ExaWizards 2019 简要题解 Tags:题解 link:https://atcoder.jp/contests/exawizards2019 很水的一场ARC啊,随随便便就 ...

  9. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

随机推荐

  1. Java面向对象程序设计笔记 • 【目录】

    持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java面向对象作业目录(作业笔记) 第1章 Java面向对象笔记 • [第1章 面向对象] 第2章 Java面向对象笔记 • ...

  2. Java高级大一结业认证考试试题 - 云南农业职业技术学院 - 互联网技术学院 - 美和易思校企合作专业

     第1题 .关于XML的文档结构描述错误的是 一个基本的XML文档通常由序言和文档元素两部分组成 XML文档中的序言可以包括XML声明.处理指令和注释 XML文档中的元素以树形结构排列 XML文档的声 ...

  3. 编写Java程序,模拟五子棋博弈过程中的异常声明和异常抛出

    返回本章节 返回作业目录 需求说明: 模拟五子棋博弈过程中的异常声明和异常抛出,判断用户所下棋子的位置,是否超越了棋盘的边界. 棋盘的横坐标的范围为0-9,纵坐标范围为0-14,如果用户所放棋子的坐标 ...

  4. .net core中的Options重新加载机制

    Options是.net core提出的一种辅助配置机制,即选项. 目前,我们可以使用的Options有五种(源码): IOptionsFactory<>:Options的创建工厂(Sin ...

  5. 表达式树扩展 动态生成表达式树插件 Sy.ExpressionBuilder。

    CURD中,基础查询我感觉还是很烦人的一个浪费时间的工作,我经历过远古时代的GetAll(string name,int age),这种方式写服务的时候真的是心中一万个草泥马飞过,后面逐渐的变成了传一 ...

  6. Pytest_allure报告(11)

    一.allure工具环境配置 windows安装allure 1.下载allure工具包 进入工具包官网:https://github.com/allure-framework/allure2/rel ...

  7. 公网ip定位原理-心得

    1.前言 正在做一个根据公网ip来定位到大体的位置,一般是精确到城市或地区, 如果想要精确到街道和地图一一对应,那得使用GPS才可以,这里不讨论. 2.科普 公网也就是外网,由运营商的机房服务器自动给 ...

  8. Go语言系列之标准库flag

    Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单. os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数. ...

  9. Go语言系列之标准库strconv

    Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi().Itia().pa ...

  10. Cookie.Session到Token和JWT

    一.session和cookie: 现在一般都是session和cookie一起用,一起提.但是他们俩其实不是一定要在一起. session的产生原因是,http协议是无状态的 这就导致了,不同的用户 ...