洛谷 P1400 塔
2024-08-27 20:21:51
题目描述
有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;
}
最新文章
- win7 64位下 mongodb安装及命令运行
- JS实现动态显示当前时间
- 订阅Linux内核的邮件列表
- iOS开发——高级篇——换肤、静态库
- smarty模板继承
- 使用shell测试cdn状态
- Slideout吐槽
- bjfu1211 推公式,筛素数
- shell实现查询oracle数据库表,并写到本地txt文件
- pyqt中使用matplotlib绘制动态曲线
- HDU 3018 Ant Trip
- Java中的内部类、匿名类的使用
- keil TEA
- Oracle正则表达式之匹配网址
- [读书笔记] 三、搭建基于Spring boot的JavaWeb项目
- July 08th. 2018, Week 28th. Sunday
- JAVA 8 主要新特性 ----------------(五)Lambda方法引用与构造器引用
- win10 linux 子系统 所在 目录
- centos中单进程监控
- U3D面试题
热门文章
- element-ui table 行内编辑
- 【Codeforces Beta Round #45 D】Permutations
- 高性能网络编程 - select系统调用
- LicManager系统对各license类型终端客户机器的监控
- 鸟哥的Linux私房菜-----15、例行性命令at与crontab
- Html+CSS基础之CSS样式
- shrio 授权
- Ubuntu Bonding(16.04网卡绑定)
- python数据处理技巧一
- cz.msebera.android.httpclient.conn.ConnectTimeoutException: Connect to /192.168.23.1:8080 timed out(Android访问后台一直说链接超时)