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

SP6950 CTOI10D3 - A HUGE TOWER 题解

按照 $ h $ 降序依次放每个积木,此时如果有 \(2\) 块积木,那么一定满足条件。因为 \(h_{\text{now}} - h_{\text{pre}} \leq 0 \leq D\)

继续往下想,再加一块,也要满足 $ h_{\text{next}} - h_{\text{now}} \leq D $。一旦不满足这个条件,后续即使插入更小的积木,也不合法。

每个积木 $ x $ 可以在 $[h_x, h_x + D] $ 的积木中任意选择一个并插入在下方。每次操作基本独立,根据乘法原理,总方案数是每次选法的乘积。

总复杂度 $ O(n \log n) $,瓶颈在于排序。

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 6.2e5 + 5, mod = 1e9 + 9;
int n, D, a[N];
signed main() {ios::sync_with_stdio(false);cin.tie(0);cin >> n >> D;for (int i = 1; i <= n; i++) {cin >> a[i];}a[0] = 1;sort(a + 1, a + 1 + n);for (int i = 2, j = 1; i <= n; i++) {for (; a[i] - a[j] > D; j++);    //用双指针求出每次的选法数量a[0] = a[0] * (i - j + 1) % mod;}cout << a[0];return 0;
}
http://www.jsqmd.com/news/9263/

相关文章:

  • Kubernetes 定时备份etcd数据
  • 16_AiAgentMCP简单教程
  • 17_AiAgentMCP实现技术选型
  • JVM_XMS 和 java_opts哪种写法对?如何在JVM中设置JVM_XMS和java_opts?
  • 鸿蒙编译ffmpeg库 - 详解
  • 知道却做不到
  • 详细介绍:003 flutter初始文件讲解(2)
  • WinReanimator恶意软件清除指南:详细步骤与工具使用
  • Git的使用技巧 - 教程
  • 字节跳动开源图标库:2000+图标一键换肤的魔法 - 教程
  • Photoshop启用钢笔绘制图形
  • 代码随想录打卡|Day51 图论(dijkstra(堆优化版)精讲、Bellman_ford 算法精讲) - 教程
  • 自动化数据操作平台获3000万美元融资
  • 常见排序算法详解与C语言实现 - 详解
  • AtCoder Beginner Contest 422 游记(VP)
  • 详细介绍:无人机光纤FC接口模块技术分析
  • 2025 --【J+S 二十连测】-- 第十三套 总结
  • 文件提供的基本操作
  • yarn、pnpm、npm - 指南
  • 基于Linux环境docker封装exe
  • 迈向人机价值共生文明:AI元人文范式下的演化架构与协同治理
  • 文件存储空间管理
  • ubuntu之开机自启frpc - 教程
  • 详细介绍:关于ios点击分享自动复制到粘贴板的问题
  • 新一代数据平台替代传统大数据技术栈
  • 攻击者如何绕过macOS内置安全防护机制
  • Python趣学篇:交互式词云生成器(jieba + Tkinter + WordCloud等) - 指南
  • 详细介绍:JVM——从JIT到AOT:JVM编译器的云原生演进之路
  • deep-agents
  • 在A列连续且相等行的最后插入空行,并求和