热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WC2022习题选做及总结

1.Kitesurfing有一点神,结合了代码才理解到了它的精妙之处!考虑研究我们的解的形态,并尝试将其规范化。显然,我们的解当中必然存在一连串的大跳,然后接一段游泳小跳啥的,然后

1.Kitesurfing

有一点神,结合了代码才理解到了它的精妙之处!

考虑研究我们的解的形态,并尝试将其规范化。

显然,我们的解当中必然存在一连串的大跳,然后接一段游泳小跳啥的,然后继续大跳啥的。

假如中间只接了游泳,那么考虑将这段游泳和后面的大跳交换位置,发现最终落点不变,但中间落点不一定合法。

如果中间落点不合法,则我们完全可以把部分游泳移动使之大跳落点恰好在岛屿的右边界。

如果合法则递归考虑。

假如中间直接了小跳,则小跳一定可以变大,让落点不变只需要让后面的跳跃同时缩短即可,发现这样做不仅会使答案不劣而且很有可能使它更优。

由于小跳是小跳,因此这个小跳一定可以恰好落在岛屿的左端点。

如果小跳和游泳同时连续存在,则小跳可以变大直到无游泳或大跳,则必然更优且划归为上述情况。

整理以上讨论可以得到:

存在最优解由以下结构构成:

1.不断大跳,然后游一段泳,然后大跳到一个岛屿右端点。

2.不断大跳,然后小跳到一个岛屿左端点,然后下一跳尽量跳远一点。

于是我们可以通过上述规则转移。

考虑对以每一个岛屿边缘为起点跳到以另一个岛屿的边缘为一次转移,由于最多只会有两种到达情况,因此总转移数是 \(O(n)\) 的,因此总复杂度是 \(O(n^2)\) 的。

为了实现轻松,我们可以让每一个转移,即大跳过下一个岛屿也作为状态,把状态数升为 \(n^2\) ,会好写很多。

官方题解说复杂度是 \(O(n^3)\) 的,但我觉得是 \(O(n^2log n)\) 的,但机房有人不信,有兴趣的同学可以精细实现。


2.Date Pickup

为什么这样的人也能有npy

并不易于直接计算,答案显然具有单调性,不妨考虑二分答案 \(ans\) 。

问题被转化成为了判断一个答案是否可行。

考虑如果他在 \(a\) 时刻收到了电召该怎么办?考虑我们在一开始先计划前往点 \(x\) ,则满足 \(dis[s][x] + dis[x][t] \le a + ans\)。

于是我们想到去找到所有计划第一个到达的点。考虑到达了这样一个计划目标点之后怎么办?

由于他刚走上一条边的时候也可能收到电召,因此一条边 \((u,v,w)\) 可以走当且仅当 \(w + dis[v][t] \le ans\) 。可以理解为刚下道就直奔 npy 家。

考虑找到这些边,由于我们会先到目标点,所以我们可以用目标点吧这些可走的边扩展出来,于是就得到了可走的子图。

检查这个子图是否有环以及最多能在里面逛多久。如果有环一直走环等电召,否则尽量走久一点,如果能挨到 \(b\) 以后则可行。

注意到他可以在家摆烂摆到再不去就赶不上来自 npy 在 \(a\) 时刻的电召为止最优。

我相信 Richard 的行为不值得提倡。



推荐阅读
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • CSS Border 属性:solid 边框的使用详解
    本文详细介绍了如何在CSS中使用solid边框属性,包括其基本语法、应用场景及高级技巧,适合初学者和进阶用户参考。 ... [详细]
  • 本文详细探讨了在Java TCP编程中,如何理解和测量并发连接数、请求数及并发用户数,并提供了实际应用中的测试方法和优化建议。 ... [详细]
  • 本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文介绍了一种使用SQL Server存储过程来实现基于单一条件的高效分页查询的方法。通过示例代码,详细说明了如何构建和执行这种分页查询。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • Java 中的十进制样式 getZeroDigit()方法,示例 ... [详细]
  • 本文通过C++语言实现了一个递归算法,用于解析并计算数学表达式的值。该算法能够处理加法、减法、乘法和除法操作。 ... [详细]
  • 字符串中特定模式出现次数的计算方法
    本文详细探讨了如何高效地计算字符串中特定模式(如'pat')的出现次数,通过实例分析与算法解析,帮助读者掌握解决此类问题的方法。 ... [详细]
  • Irish budget airline Ryanair announced plans to significantly increase its route network from Frankfurt Airport, marking a direct challenge to Lufthansa, Germany's leading carrier. ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
author-avatar
kobe24_3803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有