hdu5400Arithmetic Sequence
2015-08-18 18:28
363 查看
//一个序列,两个公差d1,d2 //问有多少个区间使得这个区间存在一个点,它的左边是公差为d1的序列 //它的右边是公差为d2的序列 //直接存入每个点向左和向右延伸的公差长度,乘一下就行 //还有就是注意一下d1=d2的情况 #include<cstdio> #include<cstring> #include<iostream> using namespace std ; const int maxn = 1e5+10 ; int a[maxn] ; typedef long long ll ; ll l[maxn] , r[maxn] ; int main() { int n , d1 , d2 ; while(~scanf("%d%d%d" ,&n , &d1 , &d2)) { for(int i = 1;i <= n;i++) scanf("%d" , &a[i]) ; ll ans = 0 ; if(d1 == d2) { ll sum = 1; for(int i = 2;i <= n;i++) if(a[i] == a[i-1] + d1) sum++ ; else { ans += (sum+1)*sum/2 ; sum = 1 ; } ans += (sum+1)*sum/2 ; } else { l[0] = 0 ;r[n+1] = 0 ; for(int i = 1;i <= n;i++) if(a[i] == a[i-1] + d1) l[i] = l[i-1] + 1 ; else l[i] = 1 ; for(int i = n;i >= 1;i--) if(a[i] == a[i+1] - d2) r[i] = r[i+1] + 1 ; else r[i] = 1 ; for(int i = 1;i <= n;i++) ans += l[i]*r[i] ; } printf("%lld\n" , ans) ; } return 0 ; }
相关文章推荐
- PowerBuilder中使用JDBC连接MYSQL 无法使用COUNT(*) MAX() 函数的处理
- 合成UIImageView,改变尺寸
- 使用YUI Compressor压缩JS和Css,批处理,右键,注册表,打包
- iOS UIImage剪切圆形
- UIView的“截屏”
- Mybatis select返回值为map时,选取表字段的两列作为key,value
- STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
- easyui datebox 扩展 只显示年月
- /proc/cpuinfo
- Null value was assigned to a property of primitive type setter of
- easyui数据窗口datagrid的数据加载问题
- HDU5400 Arithmetic Sequence 数学题
- UINavigation返回按钮修改标题
- iOS UITableView代理方法详解
- android.util.AndroidRuntimeException: requestFeature() must be called before adding content
- ZOJ 2319 Beatuiful People(单调递增序列的变形)
- UINavigationController
- 初始UI(UILabel、UIButton、UITextField)
- HDU 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence(数学)——多校练习9