前言

题目链接:洛谷

题意简述

你要对一个数组排序,满足 \(a_{i + 1} \leq a_i + D\),其中 \(D\) 是给定的常数。求方案数对 \(10^9+9\) 取模的结果。

题目分析

原数组顺序不重要,且我们讨论的东西关于大小比较,考虑先对其排序。考虑使用增量法,把 \(i\) 插到前 \(i - 1\) 个组成的数组里。

如果能插到某一个位置,那么我们不需要考虑它上面那块砖。因为上方要么是空的,要么因为排过序,肯定符合要求。

所以等价于问可以插到哪些砖块的上方。

发现就是询问 \([1, i - 1]\) 有多少个值处在 \([a_i - D, a_i]\) 里面,或者直接放在地上。经典的二维数点问题。或者由于排过序了,双指针即可。

最终答案就是乘法原理,每一步方案数的乘积。

时间复杂度 \(\Theta(n \log n)\),瓶颈在于排序。

代码

略去了快读。

#include <cstdio>
#include <algorithm>
using namespace std; constexpr const int mod = 1e9 + 9; int n, D, val[620010];
int res = 1; signed main() {
fread(buf, 1, MAX, stdin);
read(n), read(D);
for (int i = 1; i <= n; ++i) read(val[i]);
sort(val + 1, val + n + 1);
for (int i = 1, j = 1; i <= n; ++i) {
while (j <= n && val[j] <= val[i] + D) ++j;
res = 1ll * res * (j - i) % mod;
}
printf("%d", res);
return 0;
}

后记 & 反思

想到插进去了,但是,硬往动态规划的方向靠,导致没想到就是一个乘法原理。

[CEOI2010 day2] tower 题解的更多相关文章

  1. Bzoj 2013 [Ceoi2010] A huge tower 题解

    2013: [Ceoi2010]A huge tower Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 471  Solved: 321[Submit ...

  2. JLOI2015 DAY2 简要题解

    「JLOI2015」骗我呢 题意 问有多少个 \(n \times m\) 的矩阵 \(\{x_{i, j}\}\) 满足 对于 \(\forall i \in [1, n], j \in [1, m ...

  3. SCOI2016 Day2 简要题解

    「SCOI2016」妖怪 题意 有 \(n\) 只妖怪,每只妖怪有攻击力 \(\text{atk}\) 和防御力 \(\text{dnf}\) ,在环境 \((a, b)\) 下,它可以把攻击力和防御 ...

  4. SCOI 2015 Day2 简要题解

    「SCOI2015」小凸玩密室 题意 小凸和小方相约玩密室逃脱,这个密室是一棵有 $ n $ 个节点的完全二叉树,每个节点有一个灯泡.点亮所有灯泡即可逃出密室.每个灯泡有个权值 $ A_i $,每条边 ...

  5. AHOI2013 Round2 Day2 简要题解

    第一题: 第一问可以用划分树或主席树在O(nlog2n)内做出来. 第二问可以用树状数组套主席树在O(nlog2n)内做出来. 我的代码太挫了,空间刚刚卡过...(在bzoj上) 第二题: 分治,将询 ...

  6. noip 2012 提高组 day2 部分题解

    这道题有多种解法,我用的是扩展欧几里得算法求到的答案 #include<iostream> #include<fstream> #include<cstdio> u ...

  7. noip 2013 提高组 Day2 部分题解

    积木大赛: 之前没有仔细地想,然后就直接暴力一点(骗点分),去扫每一高度,连到一起的个数,于是2组超时 先把暴力程序贴上来(可以当对拍机) #include<iostream> #incl ...

  8. Luogu P4670 [BalticOI 2011 Day2]Plagiarism 题解

    我最近是不是数据结构学傻了啊... 这道题看是1e5,所以复杂度为\(O(nlogn)\)的是完全可以跑过去的,然后看题,要求的对于每个数满足要求的区间的长度之和,我们自然而然的就可以想到用FHQ-T ...

  9. UOJ 2021 NOI Day2 部分题解

    获奖名单 题目传送门 Solution 不难看出,若我们单个 \(x\) 连 \((0,x),(x,0)\),两个连 \((x,y),(y,x)\) ,除去中间过对称轴的一个两个组,就是找很多个欧拉回 ...

  10. Solution Set - 杭电多校 2022 Day2 一句话题解

    A:看了题就很容易想到虚树吧,建出虚树后考虑整体扫一遍虚树,注意到这是一棵根向树,那么统计其实十分简单,将对 \(C\) 类节点的标记下放,\(A,B\) 类节点同时上传,如果在 DFS 的过程中发现 ...

随机推荐

  1. 「C++」复杂模拟【壹】

    建议开启目录食用 阅读本文之前建议您先看这里,如果您已经看完了,那么就可以放心大胆的学习本文了. 我认为其实本文的难度还是比较大的,今天我们题是来自山东省省选,所以建议大家谨慎阅读,如果您是专业程序员 ...

  2. nn.Conv2d()中dilation参数的作用

    nn.Conv2d()中dilation参数的作用 下面这张图很好的描述了这个参数的作用 优点: 这样每次进行单次计算时覆盖的面积(感受域)增大,最开始时3*3 = 9 然后是5*5 = 25最后是7 ...

  3. 免费领 | 2000件“直击灵魂”的Polo衫,创龙科技10周年献礼!

          一件"有灵魂"的Polo衫 时光荏苒,创龙科技即将迎来10周年庆!为感谢各位客户多年的支持与信任,创龙科技特推出10周年献礼活动--2000件"直击灵魂&qu ...

  4. 将本地Unity项目上传到GitHub

    标题:如何将本地Unity项目上传到GitHub教程 问题背景: 说来惭愧,玩程序这么多年,一直在领导们手下开发,自己有什么需要记录的都在本地或者博客园随手记记,有什么需要测试或者自己研究的东西,也都 ...

  5. PO、VO、BO、DTO、POJO、DAO、DO

    DO: domain object持久对象就是从现实世界中抽象出来的有形或无形的业务实体. PO:persistant object持久对象最形象的理解就是一个PO就是数据库中的一条记录.好处是可以把 ...

  6. mac电脑好用的工具总结

    制作gif:https://gfycat.com/gifbrewery 制作gif(超级好用,制作速度快,压缩图片小):https://www.cockos.com/licecap/ 解压工具:htt ...

  7. ScreenToGif:一款开源免费且好用的录屏转Gif软件

    ScreenToGif介绍 GitHub上的介绍:此工具允许您记录屏幕的选定区域.来自网络摄像头的实时提要或来自草图板的实时绘图.之后,您可以编辑动画并将其保存为 gif.apng.视频.psd 或 ...

  8. [oeasy]python0089_大型机的衰落_Dec小型机崛起_PDP_VAX网络

    编码进化 回忆上次内容 上次 回顾了 计算机存储单位的演变 最小的读写单位 是 bit 8-bit 固定下来 成为了字节(Byte) 位数 容量 8-bit 1Byte 1024Byte 1 KB 1 ...

  9. Doris failed to initialize storage reader. tablet=106408, res=[NOT_IMPLEMENTED_ERROR]to be implemented

    Apache Doris 2.3 以下的版本会存在一个 bug,导致数据在合并时存在异常,在后续查询该字段数据时会提示 [1105] [HY000]: errCode = 2, detailMessa ...

  10. ICPC游记

    \[\Large\color{#FCAEBD}『2024ICPC河南站 游记』 \] Day 0 晚上打了场 \(ABC\),快成屎了,最后竟然还加分了. 晚上回家洗了个澡,收拾收拾东西,凌晨2点就睡 ...