hdu5400Arithmetic Sequence
2024-08-31 17:02:13
//一个序列,两个公差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 ;
}
最新文章
- TSQL 字符串函数:截断和查找
- React Native之FlexBox介绍和使用
- Python之路【第十七篇】Django进阶篇
- Windbg调试命令详解
- json处理总结(前端js和后端java)
- Python操作Excel之xlwt
- 未来十年的十三条思考(FW)
- Python 以指定概率获取元素
- js自执行函数表达式
- hdu2208之搜索
- TLSAlloc()
- mvc+webapi+dapper+ef codefirst项目搭建
- java~gradle构建公用包并上传到仓库~使用私有仓库的包
- 《HelloGitHub月刊》第 06 期
- idea spring boot
- wxPython制作跑monkey工具(python3)
- stringstream
- markdown的使用语法的补充
- dtb和dtc文件浅析
- 使用";+";进行字符串拼接
热门文章
- ssh 免交互式登陆
- JS几种遍历方式比较
- POJ 3271 BFS (大坑)
- CORS support in Spring Framework--官方
- 实测Untangle - Linux下的安全网关
- linux RAC 安装失败完全卸载
- epson 630打印机驱动安装不上
- BZOJ3130: [Sdoi2013]费用流(二分,最大流)
- 【editplus经常用的快捷键】Editplus 选中一行ctrl+r,Edit 合并行 Ctrl+Shift+J 合并选定行 删除当前行
- 洛谷 P2355 团体操队形