Codeforces 466D Increase Sequence(dp+组合数学)
来源:互联网 发布:阿里云的cdn怎么样 编辑:程序博客网 时间:2024/04/30 10:05
题目链接:Codeforces 466D Increase Sequence
题目大意:给定一个序列,现在可以选中一段区间,使得整段区间上每个位置数加1,要求最后每个位置都为h,并且选中的区间不能有相同l或则r。
解题思路:因为每个位置最多有一个起始和一个终止(区间)。
- ai和ai+1差的绝对值超过1,则肯定是不行的,
- ai+1−ai=1,那么一定要从i+1的位置新起一段区间
- ai+1−ai=−1,那么一定要在i+1的位置上终止一段区间,C(1ai)
- ai+1−ai=0,可以不变,也可以终止并新起一段。
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 2005;const ll mod = 1e9+7;int N, H, arr[maxn];int solve () { N++; ll ret = 1; for (int i = 1; i <= N; i++) { int t = arr[i] - arr[i-1]; if (t > 1 || t < -1) return 0; else if (t == 0) ret = ret * (arr[i] + 1) % mod; else if (t == -1) ret = ret * arr[i-1] % mod; } return ret;}int main() { scanf("%d%d", &N, &H); for (int i = 1; i <= N; i++) { scanf("%d", &arr[i]); arr[i] = H - arr[i]; } printf("%d\n", solve()); return 0;}
0 0
- Codeforces 466D Increase Sequence(dp+组合数学)
- Codeforces 466D Increase Sequence(dp+组合数学)
- 【DP】 codeforces 466D Increase Sequence
- codeforces 466D Increase Sequence DP
- Codeforces 466 D. Increase Sequence
- 【CODEFORCES】 D. Increase Sequence
- Codeforces 466D Increase Sequence【思维】好题~
- CodeForces 233 D.Table(dp+组合数学)
- CodeForces 37 D.Lesson Timetable(组合数学+dp)
- codeforces round #266 D Increase Sequence 记忆化搜索
- Codeforces Round #266 (Div. 2) D. Increase Sequence
- Codeforces Round #266 (Div. 2)-D. Increase Sequence
- Codeforces-785D (组合数学)
- hpu 1192 Sequence (dp+组合数学)
- codeforces 500D - New Year Santa Network (树形DP+组合数学)
- Codeforces 615D Multipliers 【组合数学】
- codeforces 900D(组合数学+剪枝)
- CodeForces 26 D.Tickets(组合数学)
- web通过from后台java上传文件
- HDU 2276 Kiki & Little Kiki 2(矩阵快速幂)
- 基于DCMTK的DICOM医学图像显示及其调窗方法研究
- 网站分析90%的投入应该给分析数据的人
- 1.I2C协议
- Codeforces 466D Increase Sequence(dp+组合数学)
- 3Sum Closest
- 清除浮动的原理和方法
- JavaScript小特性(6)——函数式编程
- 文字的颗粒效果
- Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串
- 从简单实例开始,学会写Makefile(二)
- java的selector用法
- 求二叉树的任意两个节点的最近公共祖先