当前位置: 首页 > 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.rkmt.cn/news/21876.html

相关文章:

  • Linux 文件及相关安全操作指南
  • 怎么能把一个横着的很长的excel表,输出成一个能完整展示在一个页面中的PDF
  • agent技术框架
  • 夸克网盘免费扩容,新用户轻松领取1TB免费空间!一步一步教你如何操作! - 详解
  • [AI生成]Spark-TTS个人理解
  • [20251014]建立完善通用的prx.sql脚本.txt
  • 复杂版式与印章干扰下的高精度社会团体法人登记证书识别技术
  • 征程 6 | BPU trace 简介与实操
  • 实验任务2
  • 2025 年风淋室厂家选哪家?广州灵洁凭技术专利与全链服务打造净化设备优质之选
  • Spring bean初始化过程
  • 【Windows】如何管理电脑磁盘文件,保持简洁 - 教程
  • 范围综述
  • 低代码软件开发流程
  • CSP-S模拟30
  • 2025多校冲刺CSP模拟赛5
  • 应用安全 --- 安卓神器 之 入口加密
  • 读书报告和代码
  • P66实训2
  • const int *p和int *const p快速区分
  • pytorch作业
  • pytorch实验题作业
  • P14223 [ICPC 2024 Kunming I] 乐观向上
  • C 语言 - 内存操作函数以及字符串操作函数解析
  • 2025秋_12
  • 第七章:C控制语句:分支和跳转
  • 近期模拟赛汇总
  • 实用指南:部署Tomcat11.0.11(Kylinv10sp3、Ubuntu2204、Rocky9.3)
  • Hbase的安装与配置
  • 数据结构-循环队列