BZOJ 4352 预处理 + DP
来源:互联网 发布:java连接sql代码 编辑:程序博客网 时间:2024/06/05 17:07
题目链接 : http://www.lydsy.com/JudgeOnline/problem.php?id=4352
一道SB题。。先把所有积木的长度从小到大排序。设前i块积木的摆放方案为f[i]。
先考虑第i块摆在最下面的情况。显然合法,且方案数为f[i-1]。
然后对于前i-1块的每一种摆放方案,都可以把第i块摆在s[i]块之上,其中s[i]为可以被第i块摆在上面的积木块数,可以O(n)预处理出来。
所以 f[i]=(s[i]+1)*f[i-1]
最终答案即为f[n]。
// BZOJ 4352#include <cstdio>#include <cstring>#include <algorithm>using namespace std; const int N=700000+5; #define rep(i,a,b) for (int i=a; i<=b; i++) #define read(x) scanf("%d", &x) int n, d, a[N], s[N]; long long ans; const int mod=998244353;int main(){read(n); read(d);rep(i,1,n) read(a[i]), s[i]=1;sort(a+1, a+n+1);int j=1, sum=0;rep(i,2,n) if (a[i]-a[j]<=d) { sum++; s[i]+=sum; } else { sum++; while (a[i]-a[j]>d && i>j) sum--, j++; s[i]+=sum; }ans=1;rep(i,1,n) ans=(ans*s[i])%mod; printf("%lld\n", ans); return 0;}
0 0
- BZOJ 4352 预处理 + DP
- BZOJ 2806 (ctsc 2012) Cheat 后缀自动机预处理 + DP
- BZOJ-1087 互不侵犯King 状压DP+DFS预处理
- BZOJ 1087: [SCOI2005]互不侵犯King 预处理,状压DP
- 匹配问题 dp预处理
- DZY Loves Sequences 预处理 dp
- hdu 4791 dp预处理+二分
- HDU 4455 Substrings(预处理+dp)
- lightoj 1326 - Race dp+预处理
- FZU 2204 7 dp+预处理
- FZU 2200 cleaning dp+预处理
- 【bzoj4043】【Cerc2014】【Vocabulary】【dp+预处理】
- Hdu 5317 RGCDQ (dp+预处理)
- CodeForces 623B【预处理+DP】
- hihocoder1104(Dfs预处理+树形DP)
- POJ3093 浅谈背包DP预处理
- bzoj 3864 dp套dp
- bzoj 2693 jzptab(线性筛预处理+反演)
- 创建并初始化一个servlet
- 187 Examine the following command: SQL> ALTER TABLE booking SHRINK SPACE COMPACT; Which activity is
- js前台与后台数据交互-前台调后台
- 查看可执行文件都包含的内容 .exe .apk
- 欢迎使用CSDN-markdown编辑器
- BZOJ 4352 预处理 + DP
- 如何产生任意个数的验证码
- Javascript设计模式理论与实战:单例模式
- iOS UITextField
- [nQSError:39043] 由于初始化块 使用的是行范围初始化但没有目标变量, 无法延迟执行它
- 第二章:UML用例图
- android学习笔记——Activity的生命周期
- 字符串生成
- vs2010说明