题目描述

有N(2<=N<=600000)块砖,要搭一个N层的塔,要求:如果砖A在砖B上面,那么A不能比B的长度+D要长。问有几种方法,输出 答案 mod 1000000009的值.

输入输出格式

输入格式:

第一行: N,D 第二行: N个数,表示每块砖的长度。

输出格式:

方案数,输出要mod 1000000009

输入输出样例

输入样例#1: 复制

4 1
1 2 3 100
输出样例#1: 复制

4
思路:数学
首先排序,这是大家能想到的第一思路。
其次计算 num[i]--num[i]+d中数的个数,ans每次乘这个数,乘法原理解决。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod 1000000009
using namespace std;
int n,d;
int num[];
int l,r,mid,ll,rr;
long long ans=;
bool judge(int i){
if(num[mid]<=num[i]) return true;
else return false;
}
bool juddge(int i){
if(num[mid]<=num[i]+d) return true;
else return false;
}
int main(){
scanf("%d%d",&n,&d);
for(int i=;i<=n;i++)
scanf("%d",&num[i]);
sort(num+,num++n);
for(int i=;i<=n;i++){
l=;r=n;
while(l<=r){
mid=(l+r)/;
if(judge(i)) l=mid+;
else r=mid-;
}
ll=;rr=n;
while(ll<=rr){
mid=(ll+rr)/;
if(juddge(i)) ll=mid+;
else rr=mid-;
}
ans=ans*(ll-l+)%mod;
}
cout<<ans;
}
 

最新文章

  1. win7 64位下 mongodb安装及命令运行
  2. JS实现动态显示当前时间
  3. 订阅Linux内核的邮件列表
  4. iOS开发——高级篇——换肤、静态库
  5. smarty模板继承
  6. 使用shell测试cdn状态
  7. Slideout吐槽
  8. bjfu1211 推公式,筛素数
  9. shell实现查询oracle数据库表,并写到本地txt文件
  10. pyqt中使用matplotlib绘制动态曲线
  11. HDU 3018 Ant Trip
  12. Java中的内部类、匿名类的使用
  13. keil TEA
  14. Oracle正则表达式之匹配网址
  15. [读书笔记] 三、搭建基于Spring boot的JavaWeb项目
  16. July 08th. 2018, Week 28th. Sunday
  17. JAVA 8 主要新特性 ----------------(五)Lambda方法引用与构造器引用
  18. win10 linux 子系统 所在 目录
  19. centos中单进程监控
  20. U3D面试题

热门文章

  1. element-ui table 行内编辑
  2. 【Codeforces Beta Round #45 D】Permutations
  3. 高性能网络编程 - select系统调用
  4. LicManager系统对各license类型终端客户机器的监控
  5. 鸟哥的Linux私房菜-----15、例行性命令at与crontab
  6. Html+CSS基础之CSS样式
  7. shrio 授权
  8. Ubuntu Bonding(16.04网卡绑定)
  9. python数据处理技巧一
  10. cz.msebera.android.httpclient.conn.ConnectTimeoutException: Connect to /192.168.23.1:8080 timed out(Android访问后台一直说链接超时)