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

CSP-S2023

T4

CSP-S 2023 种树

显然答案有单调性,考虑二分答案 \(t\)

二分有什么好处呢?就是可以知道每棵树最坏在哪天种才能达到 \(a_i\) 的高度。(不二分是做不到的,因为 \(x\) 是从 \(1\) 开始计数的。)

而这个部分显然又可以通过二分解决,比如说二分了一个 \(l\),只需要 \([l, t]\) 这段时间内长的高度达到 \(a_i\) 即可。分 \(c_i < 0\)\(c_i \ge 0\) 讨论一下,用个等差数列求和公式快速算出。(注意一些爆 int, long long 的地方,题目有好的保证答案 \(\le 10^9\)

bool check(int u, int l, int r) { // u 地块的树,从 l 时刻长到 r 是否够ll vr = b[u] + 1ll * r * v[u]; // v 即题目中的 cll vl = b[u] + 1ll * l * v[u];// 加一些特判if (max(vl, vr) >= a[u]) return 1;if (l > rr[u]) return r - l + 1 >= a[u];if (v[u] >= 0) {return ((i128)(vl + vr) * (r - l + 1) / 2 >= a[u]); // CSP 应该可以用 __int128}int r1 = min(r, rr[u]);return (i128)(vl + b[u] + r1 * v[u]) * (r1 - l + 1) / 2 + r - r1 >= a[u];
}

设第 \(i\) 块地的树最坏在第 \(ti_i\) 天种下。

接下来怎么做呢?考虑一个贪心。

显然 \(ti\) 越小的越紧迫,所有按 \(t_i\) 排序,然后按这个顺序种即可(将 \(i\) 的祖先都种上)。

证明考虑临项交换法应该不难证出来。

时间复杂度:\(O(n \log^2 V)\)

这个主要要想到二分,求对 \(ti_i\)(两年前太弱了,磕了 \(2h\) 没磕出来),贪心还是挺符合直觉的(想 DP 的话其实是不知道策略的)。

http://www.jsqmd.com/news/19871/

相关文章:

  • Spring Boot 中全面解决跨域请求
  • OpenTelemetry语义约定:规范可观测性数据,提升系统洞察力
  • Serilog基于Seq开源框架实现日志分析
  • US$390 TabScan T6XENTRY C6 Diagnostic Tool Support DoIP J2534 PDU Passthru CANFD
  • 10.20-10.26
  • 20232421 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 拓展欧几里得算法
  • 两两交换链表中的节点-leetcode
  • 算法第二章实践作业
  • 解决homebrew下载报错问题
  • 软考中级学习总结(5)
  • 软考中级学习总结(4)
  • 每日反思(2025_10_22)
  • docker: Error response from daemon: failed to set up container networking 解决办法
  • “化零为整”的智慧:内存池如何绕过系统调用和GC,构建性能的护城河
  • CSP-S36
  • 新学期每日总结(第13天)
  • 解决一台hp probook 430G3笔记本无法实现win10关机网络唤醒
  • P4765 [CERC2014] The Imp 解题笔记
  • 2025年工业三维扫描仪品牌实力榜:启源视觉稳居行业第一
  • 实验2 现代C++编程初体验
  • GCM(Galois/Counter Mode) 认证加密算法实现
  • 10.13-10.19学习做题笔记
  • yny计数题记录
  • 20232411 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • Lampiao 靶场
  • 【学习笔记】slope-trick
  • 2025.10.22
  • 有一云AI编辑器:2025年微信公众号排版的高效选择
  • 20232318 2025-2026-1 《网络与系统攻防技术》实验二实验报告