题意: 给一个数集和一个数d,问满足下列要求的排列数(相同的数要区分):  a[i]+d>=a[i+1] ( i in [1,n) )

因为数的给出顺序不重要,所以先排序,假如我们已经解决了前i个数的答案,考虑前i+1个数,即我们可以将第i+1个数放在哪,然后发现对于前i个数的每一种方案,我们都可以选择将第i+1个数放在大于等于它-d的数的上面,从而形成一种新的方案(当然直接可以放在地上),然后就完了.

收获:

  1. 对于不重要的东西(如原序列的顺序),可以直接舍弃

  2. 减小问题规模,发现小规模的问题和比它大一数据规模的问题之间的联系.

 /**************************************************************
Problem: 2013
User: idy002
Language: C++
Result: Accepted
Time:988 ms
Memory:10492 kb
****************************************************************/ #include <cstdio>
#include <algorithm>
#define N 620010
#define Mod 1000000009
using namespace std; typedef long long dnt; int n;
dnt h[N], d;
dnt dp[N]; int main() {
scanf( "%d%lld", &n, &d );
for( int i=; i<=n; i++ )
scanf( "%lld", h+i );
sort( h+, h++n );
dnt cur = ;
for( int i=; i<=n; i++ ) {
int j = lower_bound( h+, h+i, h[i]-d ) - h;
cur = cur*(i-j+) % Mod;
}
printf( "%lld\n", cur );
}

bzoj 2013 上升计数的更多相关文章

  1. BZOJ 2839: 集合计数 解题报告

    BZOJ 2839: 集合计数 Description 一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得 它们的交集的 ...

  2. BZOJ 2839: 集合计数 [容斥原理 组合]

    2839: 集合计数 题意:n个元素的集合,选出若干子集使得交集大小为k,求方案数 先选出k个\(\binom{n}{k}\),剩下选出一些集合交集为空集 考虑容斥 \[ 交集为\emptyset = ...

  3. BZOJ 1016--[JSOI2008]最小生成树计数(kruskal&搜索)

    1016: [JSOI2008]最小生成树计数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7429  Solved: 3098[Submit][St ...

  4. BZOJ 4517--[Sdoi2016]排列计数(乘法逆元)

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1727  Solved: 1067 Description ...

  5. bzoj 2425 [HAOI2010]计数 dp+组合计数

    [HAOI2010]计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 451  Solved: 289[Submit][Status][Discus ...

  6. [BZOJ 1833] 数字计数

    Link: BZOJ 1833 传送门 Solution: 比较明显的数位DP 先预处理出1~9和包括前导0的0的个数:$pre[i]=pre[i-1]*10+10^{digit-1}$ (可以分为首 ...

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

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

  8. Bzoj 2839 集合计数 题解

    2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 495  Solved: 271[Submit][Status][Discuss] ...

  9. bzoj 2013

    http://www.lydsy.com/JudgeOnline/problem.php?id=2013 最初看这个题的时候,以为神题不可做,然后去找yzjc..然后做法过于简单了(' '       ...

随机推荐

  1. Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列

    Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列   前台传来的字符串:'589,321' SELECT*FROM TAB_A T1 WHERE  T1.CODE  IN ( SEL ...

  2. Android 自定义View二(深入了解自定义属性attrs.xml)

    1.为什么要自定义属性 要使用属性,首先这个属性应该存在,所以如果我们要使用自己的属性,必须要先把他定义出来才能使用.但我们平时在写布局文件的时候好像没有自己定义属性,但我们照样可以用很多属性,这是为 ...

  3. C#面向对象(封装)

    以上就是面向对象的封装和初始化:

  4. C#中Convert.ToInt32、int.TryParse、(int)和int.Parse四者的区别

    Convert.ToInt32.(int)和int.Parse三者的区别: 首先:Convert.ToInt32 适合将object类类型转换成int类型,如Convert.ToInt32(sessi ...

  5. yield()方法就是礼让,具体还是看cpu怎么分配

    package charpter07; //yield():礼让的行为public class Processor implements Runnable { @Override public voi ...

  6. 2018-2019 2 20165203 《网络对抗技术》 Exp2 后门原理与实践

    2018-2019 2 20165203 <网络对抗技术> Exp2 后门原理与实践 实验内容 1.使用netcat获取主机操作Shell,cron启动 (0.5分) 2.使用socat获 ...

  7. C# 串口导致电脑蓝屏一个可能的原因

    在某些win7电脑上, 如果使用SerialPort对象的Read(byte[] buffer, int offset, int count)方法读取端口数据时, 若端口接受缓存区的数据少于count ...

  8. 如何获取JMX监控WebSphere所需的com.ibm.ws.admin.client_8.5.0等jar包

    https://blog.csdn.net/weixin_38645718/article/details/83346007

  9. CentOS6.8安装360 pika

    1.安装依赖包 yum install snappy-devel bz2 libzip-dev libsnappy-dev libprotobuf-dev libevent-dev protobuf- ...

  10. python学习之for循环

    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串. 实例: #!/usr/bin/env python for letter in 'Python': # 第一个实例 prin ...