【HDOJ 5400】Arithmetic Sequence
来源:互联网 发布:软件求职自我介绍 编辑:程序博客网 时间:2024/05/15 06:47
【HDOJ 5400】Arithmetic Sequence
给了两个公差d1 d2 求满足左半边公差d1 右半边公差d2的区间种数
某个或者两个公差可以不存在于区间内 但必须满足d1在d2之前
代码如下:
#include <iostream>#include <cstdio>#define ll long longusing namespace std;int b[100001];int main(){ int n,d1,d2,i; ll ans,l,r; while(~scanf("%d %d %d",&n,&d1,&d2)) { l = r = ans = 0; scanf("%d",&b[1]); for(i = 2; i <= n; ++i) { scanf("%d",&b[i]); if(i != 2 && (b[i-1] - b[i-2] == d2 && b[i] - b[i-1] != d2 )||(b[i] - b[i-1] != d1 && b[i] - b[i-1] != d2 && b[i-1] - b[i-2] == d1) )//当前差不为d2且前一组差为d2 或者前一组差为d1且当前差不为d1也不为d2 该段区间可累计进去 区间1~xsum和即为累计方案数 { if((l+r)&1) ans += (l+r+1)/2*(l+r); else ans += (l+r)/2*(l+r+1); l = r = 0; } if(b[i] - b[i-1] == d1) l++; else if(b[i] - b[i-1] == d2) r++; } if((l+r)&1) ans += (l+r+1)/2*(l+r); else ans += (l+r)/2*(l+r+1); printf("%lld\n",ans+n); } return 0;}
0 0
- 【HDOJ 5400】Arithmetic Sequence
- DP-HDOJ-5400-Arithmetic Sequence
- HDOJ 5400 Arithmetic Sequence 暴力枚举
- hdoj 5400 Arithmetic Sequence 【构造等差数列】
- hdoj Arithmetic Sequence 5400 (构造等差数列+技巧) 好题
- HDU 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- HDU-5400 Arithmetic Sequence(数学 || DP)
- hdu 5400 Arithmetic Sequence(计数)
- HDU 5400(Arithmetic Sequence-暴力找区间)
- HDU 5400 Arithmetic Sequence(数学,容斥)
- Hdu 5400 Arithmetic Sequence 数学推理
- 20150818-Android生命周期
- LintCode-第k大元素
- POJ 2186 Popular Cows
- 30 个免费的响应式 HTML5 CSS3 网站模板
- 黑马程序员——视频学习过程5
- 【HDOJ 5400】Arithmetic Sequence
- UI总结之获取各种路径1
- 我认为的学习方法。9.0
- Spring---Spring MVC 应用
- C/C++程序运行时的内存结构
- Spring和Hibernate和Struts整合(二)实现登陆验证
- 九度oj 1084
- HDU5386 Cover 果然还是暴力
- 五大布局——相对布局