HDU 5328 Problem Killer(水题)
2024-08-23 03:54:37
题意:
给一个序列,要找一个等差或等比的连续子序列,求其最长的长度。
思路:
扫两遍,判断等差或等比即可。从左往右扫,维护一个滑动窗口,考虑新加进来的数,如果满足了要求,则更新长度,否则只留最后两个数字,其他删掉,接着继续考虑下一个数字。等比也是如此,只是要注意精度的问题。
别人的代码:
#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e6+;
int arr[MAX]; int main(void)
{
//freopen("in.txt", "r", stdin);
int t = ;
scanf("%d", &t);
while(t--)
{
int n = ;
scanf("%d", &n); for(int i=; i<=n; ++i)
{
scanf("%d", &arr[i]);
} if (n== || n==)
{
printf("%d\n", n);
continue;
} int l, r;
l = ;
int diff = arr[]-arr[];
int ans1 = ;
for(r=; r<=n; ++r)
{
if (arr[r] - arr[r-] != diff)
{
diff = arr[r]-arr[r-];
l = r-;
}
ans1 = max(ans1, r-l+);
} l=;
double ddiff = 1.0*arr[]/arr[];
int ans2 = ;
for(r=; r<=n; ++r)
{
if ( fabs( 1.0*arr[r]/arr[r-] - ddiff) > 0.000001)
{
ddiff = 1.0*arr[r]/arr[r-];
l = r-;
}
ans2 = max(ans2, r-l+);
}
printf("%d\n", max(ans1, ans2));
}
return ;
}
AC代码
最新文章
- Python基础操作-函数
- 关于调试日志Log
- Ant安装、环境变量配置及验证
- XML的文档声明
- 5个让DBA爱上你的SQL技巧
- PHP学习笔记 - 进阶篇(8)
- thinPHP中多维数组的遍历
- xcode中找不到XXX.dylib
- Git如何删除版本库中的一个提交?
- 【3D计算机图形学】变换矩阵、欧拉角、四元数
- DHCP服务器的搭建
- 性能测试工具---jmeter
- php $_SERVER中的一些选项说明
- dubbo接口访问控制
- HDU 2647 Reward(拓扑排序,vector实现邻接表)
- APP性能测试开始之旅
- mongoose之findOneAndUpdate方法之代码示例
- java基础思维导图大全
- python堆排序
- zzuli2130卡时bfs题