[CEOI2010 day2] tower 题解
前言
题目链接:洛谷。
题意简述
你要对一个数组排序,满足 \(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 题解的更多相关文章
- Bzoj 2013 [Ceoi2010] A huge tower 题解
2013: [Ceoi2010]A huge tower Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 471 Solved: 321[Submit ...
- JLOI2015 DAY2 简要题解
「JLOI2015」骗我呢 题意 问有多少个 \(n \times m\) 的矩阵 \(\{x_{i, j}\}\) 满足 对于 \(\forall i \in [1, n], j \in [1, m ...
- SCOI2016 Day2 简要题解
「SCOI2016」妖怪 题意 有 \(n\) 只妖怪,每只妖怪有攻击力 \(\text{atk}\) 和防御力 \(\text{dnf}\) ,在环境 \((a, b)\) 下,它可以把攻击力和防御 ...
- SCOI 2015 Day2 简要题解
「SCOI2015」小凸玩密室 题意 小凸和小方相约玩密室逃脱,这个密室是一棵有 $ n $ 个节点的完全二叉树,每个节点有一个灯泡.点亮所有灯泡即可逃出密室.每个灯泡有个权值 $ A_i $,每条边 ...
- AHOI2013 Round2 Day2 简要题解
第一题: 第一问可以用划分树或主席树在O(nlog2n)内做出来. 第二问可以用树状数组套主席树在O(nlog2n)内做出来. 我的代码太挫了,空间刚刚卡过...(在bzoj上) 第二题: 分治,将询 ...
- noip 2012 提高组 day2 部分题解
这道题有多种解法,我用的是扩展欧几里得算法求到的答案 #include<iostream> #include<fstream> #include<cstdio> u ...
- noip 2013 提高组 Day2 部分题解
积木大赛: 之前没有仔细地想,然后就直接暴力一点(骗点分),去扫每一高度,连到一起的个数,于是2组超时 先把暴力程序贴上来(可以当对拍机) #include<iostream> #incl ...
- Luogu P4670 [BalticOI 2011 Day2]Plagiarism 题解
我最近是不是数据结构学傻了啊... 这道题看是1e5,所以复杂度为\(O(nlogn)\)的是完全可以跑过去的,然后看题,要求的对于每个数满足要求的区间的长度之和,我们自然而然的就可以想到用FHQ-T ...
- UOJ 2021 NOI Day2 部分题解
获奖名单 题目传送门 Solution 不难看出,若我们单个 \(x\) 连 \((0,x),(x,0)\),两个连 \((x,y),(y,x)\) ,除去中间过对称轴的一个两个组,就是找很多个欧拉回 ...
- Solution Set - 杭电多校 2022 Day2 一句话题解
A:看了题就很容易想到虚树吧,建出虚树后考虑整体扫一遍虚树,注意到这是一棵根向树,那么统计其实十分简单,将对 \(C\) 类节点的标记下放,\(A,B\) 类节点同时上传,如果在 DFS 的过程中发现 ...
随机推荐
- 将链表以m长度为一组反转链表
一群友分享的阿里面试题 1.将head链表以m为组反转链表(不足m则不反转): 例子:假设m=3. 链表 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> ...
- php反序列化个人笔记
反序列化 什么是反序列化? 格式转换 序列化:对象转换为字符串或者数组等格式 反序列化:将数组或字符串转换成对象 为什么会出现安全漏洞? 魔术方法 如何利用漏洞? 通过构造pop链,找到代码的逻辑漏洞 ...
- Jx9 虚拟机
一.Jx9 虚拟机的生命周期 加载 Jx9 脚本 jx9_compile() 或 jx9_compile_file(),加载编译成功后,Jx9 引擎将自动创建一个实例 (jx9_vm) 并且返回指向此 ...
- WebUI自动化测试-监听元素有无变化
from datetime import datetime,timedelta from selenium.webdriver.common.by import By def get_inocSum( ...
- 快速调用 GLM-4-9B-Chat 语言模型
一.确认本机显卡配置 二.下载大模型 国内可以从魔搭社区下载, 下载地址:https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat/files 三.运行官方 ...
- windows server + iis 部署若伊前端vue项目
一.背景说明 工作原因,一直使用若伊前后端分离版框架进行二次开发.客户的服务器多数为windows server系统,少部分为linux系统.过去一直是使用nginx进行前端的部署,nginx的代理功 ...
- 痞子衡嵌入式:浅聊恩智浦i.MXRT官方SDK里关于串行Flash相关的驱动与例程资源(上篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MXRT官方SDK里关于串行Flash相关的驱动与例程资源. 经常有同事以及 i.MXRT 客户咨询痞子衡,咱们恩智浦官方 S ...
- vue-模块工程化-手稿
- win10打不出中文的修复方法!
说明 在Win10系统中,默认自带了中文输入法,使用起来非常的方便,但有时win10系统中自带的输入法会打不出中文的情况,该怎么办呢?遇到这样的问题,我们可以参考下本文中的方法来修复. 步骤: cmd ...
- redis-sort by
对某个列表(list).集合(set).有序集合(zset)排序的时候按照某个 参考键 进行排序,而不是按照按照这个列表.集合或有序集合本身进行排序: 被排序的键和参考键在业务上有关联(这个由业务保证 ...