bzoj2013 [Ceoi2010]A huge tower
2017-10-12 22:50
267 查看
题目
神题呀,考虑从小往大加入,设目前最长的为x,给它放入,显然,比它小的一定可以放在上面,现在看它的下面可以放什么,显然是一段连续的区间,我们可以二分一下l。但是,又发现,它肯定是单增的,所以用一个变量加一下就好了。
快出新高度,又排第一。
再来一句,fread大法好。
神题呀,考虑从小往大加入,设目前最长的为x,给它放入,显然,比它小的一定可以放在上面,现在看它的下面可以放什么,显然是一段连续的区间,我们可以二分一下l。但是,又发现,它肯定是单增的,所以用一个变量加一下就好了。
#include<bits/stdc++.h> #define N 620000 #define mod 1000000009 using namespace std; int n,d,pos; int A[N+5]; long long ans; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++; } inline int read() { int x=0,b=1; char c=nc(); for(;!(c<='9'&&c>='0');c=nc())if(c=='-')b=-1; for(;c<='9'&&c>='0';c=nc())x=x*10+c-'0'; return x*b; } int main() { freopen("in.txt","r",stdin); n=read();d=read(); for(int i=1;i<=n;i++)A[i]=read(); sort(A+1,A+n+1); ans=pos=1; for(int i=2;i<=n;i++) { while(pos<=n&&A[pos]<A[i]-d)pos++; ans=1ll*ans*(i-pos+1)%mod; } cout<<ans; return 0; }
快出新高度,又排第一。
再来一句,fread大法好。
相关文章推荐
- bzoj2013[CEOI2010] A huge tower
- 【CEOI2010】【BZOJ2013】A huge tower
- BZOJ2013 [Ceoi2010]A huge tower 乱搞
- bzoj 3341: [Ceoi2013]adriatic
- bzoj2011: [Ceoi2010]Mp3 Player
- bzoj 3341: [Ceoi2013]adriatic 动态规划
- bzoj2012: [Ceoi2010]Pin
- BZOJ2084: [Poi2010]Antisymmetry
- BZOJ1767 : [Ceoi2009]harbingers
- [BZOJ1977][BeiJing2010组队]次小生成树 Tree(kruskal+链剖)
- 【bzoj1821】[JSOI2010]Group 部落划分 Group
- [二进制构造 || DP] BZOJ 3107 [cqoi2013]二进制a+b
- [BZOJ 2096][Poi2010]Pilots
- BZOJ 2111: [ZJOI2010]Perm 排列计数(DP+Lucas定理)
- bzoj 2427: [HAOI2010]软件安装【tarjan+树形dp】
- [BZOJ2117][2010国家集训队]Crash的旅游计划
- BZOJ3124: [Sdoi2013]直径
- bzoj 2005 [Noi2010]能量采集 O(n)莫比乌斯反演
- BZOJ系列1922《[Sdoi2010]大陆争霸》题解
- [bzoj 2005] [NOI2010]能量采集