当前位置: 首页 > news >正文

10.15 —— 2020icpc上海D

临近一个月得知区域赛有了名额,可能也不算是好消息,大概率会延续去年打铁的经历。但不管怎样,我都会全力以赴,就算失败,我也会坦然地告诉自己尽力了,没有什么遗憾。

紧急进行一个小规划:争取每天练一道铁铜牌区分线的题,限时作记录,写题解。周五/六/日有精力就vp一场区域赛。但还是要记住,不要因为比赛荒废了学业。

D Walker

一道并不难的分类讨论,但被蒟蒻想得有点复杂了,写了两个小时濒临崩溃。最后三分的部分写得有点小毛病,不然就ac了(但其实几乎是猜出来的qwq)。

显然每个人的覆盖部分一定是一段连续的区间,那么可以按照 每个终点是先被谁覆盖的,来进行分讨:

  1. 两个端点均是被同一个人覆盖的,那么另一个人就没有任何贡献,相当于只有一个人走,这种情况非常简单。
  2. 每个端点都是被离得较远的那个人先覆盖的。在这种情况下,容易想到两个人均不折返,直达终点可以使得时间最小化,也比较容易求。
  3. 每个端点都是被离得较近的那个人先覆盖的。在这种情况下,首先可以确定的是,两个人都不会越过对方的起点(因为起点后面的段最终都会被对方覆盖)。因此可以发现两个区间满足:一个区间是以 \(0\) 开头的前缀,另一个是以 \(n\) 结尾的后缀。那么显然,前缀结尾和后缀结尾相同时取最优解。设这个位置是 \(p\),那么答案可以表示成:

\[max(\frac{p + min(p_{1}, p - p_{1})}{v_{1}}, \frac{n - p + min(n - p_{2}, p_{2} - p)}{v_{2}}) \]

其中 \(p \in [p_{1}, p_{2}]\)

有好几种方法可以求解这个函数的最小值:

  1. 猜测这个函数是凸性的,于是直接三分求最小值(蒟蒻就是这么做的,不会证明,结果居然是对的)
  2. 显然答案是具有二段性的,因此还可以考虑直接二分答案
    check函数可能比较难写
    具体看一下这个人写的博客:blog
  3. 貌似还有直接推式子的解法?那真的是蛮nb的。

code

http://www.hskmm.com/?act=detail&tid=31891

相关文章:

  • [QOJ888] Travel around China 题解
  • MySQL面试必考:从入门到精通的20个问题
  • 手撕大模型 | MQA 和 GQA 原理解析
  • P1912 [NOI2009] 诗人小G 分析
  • [COCI2022-2023#2] Tramvaji 题解
  • 一级指针和二级指针作为函数参数的区别
  • ROUGE指标
  • CSP-S 模拟 29
  • Linux 文件及相关安全操作指南
  • day012
  • 怎么能把一个横着的很长的excel表,输出成一个能完整展示在一个页面中的PDF
  • 高精度
  • 深入解析:Leetcode+Java+图论+岛屿问题
  • 简单介绍
  • agent技术框架
  • agent认知与原理分析
  • agent策略分析与Parer解读
  • Visual Studio 2022连接mysql数据库,解决System.Data.Odbc.OdbcException (0x80131937)
  • day05
  • [AI生成]Spark-TTS个人理解
  • 2025.10.3 测试
  • [20251015]建立和完善col_vlist.sql脚本.txt
  • [20251014]建立和完善col_list.sql脚本.txt
  • [20251014]建立完善通用的prx.sql脚本.txt
  • 倍增法
  • 复杂版式与印章干扰下的高精度社会团体法人登记证书识别技术
  • 征程 6 | BPU trace 简介与实操
  • 2025年预应力千斤顶厂家最新权威推荐榜:批发采购、张拉设备、同步顶升系统专业供应商综合测评与选购指南
  • 2025.10.15训练记录
  • 利用Next.js中间件漏洞实现SSRF攻击与RCE