【尺取】HDU Problem Killer
acm.hdu.edu.cn/showproblem.php?pid=5328
【题意】
给定一个长度为n的正整数序列,选出一个连续子序列,这个子序列是等差数列或者等比数列,问这样的连续子序列最长是多少?
【思路】
尺取,用来解决这样的问题:需要在给的一组数据中找到不大于某一个上限的“最优连续子序列”
分别用双指针找最长的等差数列和等比数列,找最大值就可以了。
注意a 或者 a b既是等差数列,又是等比数列。
【Accepted】
- #include <iostream>
- #include <stdio.h>
- #include <cmath>
- #include <vector>
- #include <algorithm>
- #include <set>
- #include <map>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <string>
- #include <bitset>
- #include <ctime>
- #include<algorithm>
- #include<cstring>
- using namespace std;
- typedef long long ll;
- int n;
- const int maxn=1e6+;
- int a[maxn];
- int ans;
- int AP()
- {
- int l=;
- int r=;
- int add=a[r]-a[l];
- int res=;
- while(l<n && r<n)
- {
- while(r<n && a[r]-a[r-]==add)
- {
- r++;
- }
- res=max(res,r-l);
- l=r-;
- add=a[r]-a[l];
- }
- return res;
- }
- int GP()
- {
- int l=;
- int r=;
- double q=(double)a[r]/(double)a[l];
- int res=;
- while(l<n && r<n)
- {
- while(r<n && (double)a[r]/(double)a[r-]==q)
- {
- r++;
- }
- res=max(res,r-l);
- l=r-;
- q=(double)a[r]/(double)a[l];
- }
- return res;
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- while(T--)
- {
- scanf("%d",&n);
- for(int i=;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- if(n<=)
- {
- printf("%d\n",n);
- continue;
- }
- ans=;
- ans=max(ans,AP());
- ans=max(ans,GP());
- printf("%d\n",ans);
- }
- return ;
- }
【尺取】HDU Problem Killer的更多相关文章
- hdu 4123 Bob’s Race 树的直径+rmq+尺取
Bob’s Race Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...
- hdu 6231 -- K-th Number(二分+尺取)
题目链接 Problem Description Alice are given an array A[1..N] with N numbers. Now Alice want to build an ...
- 【单调队列+尺取】HDU 3530 Subsequence
acm.hdu.edu.cn/showproblem.php?pid=3530 [题意] 给定一个长度为n的序列,问这个序列满足最大值和最小值的差在[m,k]的范围内的最长子区间是多长? [思路] 对 ...
- 【尺取】HDU String
http://acm.hdu.edu.cn/showproblem.php?pid=5672 [题意] 给定一个小写英语字母组成的字符串,求这个字符串一共包含多少个至少有m个不同字母的连续子序列 [思 ...
- #333 Div2 Problem B Approximating a Constant Range (尺取 && RMQ || 尺取 && multiset)
题目链接:http://codeforces.com/contest/602/problem/B 题意 :给出一个含有 n 个数的区间,要求找出一个最大的连续子区间使得这个子区间的最大值和最小值的差值 ...
- A - Jessica's Reading Problem POJ - 3320 尺取
A - Jessica's Reading Problem POJ - 3320 Jessica's a very lovely girl wooed by lots of boys. Recentl ...
- HDU 5178 pairs【二分】||【尺取】
<题目链接> 题目大意: 给定一个整数序列,求出绝对值小于等于k的有序对个数. 解题分析: $O(nlong(n))$的二分很好写,这里就不解释了.本题尺取$O(n)$也能做,并且效率很不 ...
- HDU 5672 String 【尺取】
<题目链接> 题目大意:给定一个只由26个小写字母组成的字符串,现在问你至少包含k个不同字母的连续子序列总数有多少. 解题分析:经仔细研究,我们发现,每次尺取到符合要求的最小区间,然后将区 ...
- 【尺取或dp】codeforces C. An impassioned circulation of affection
http://codeforces.com/contest/814/problem/C [题意] 给定一个长度为n的字符串s,一共有q个查询,每个查询给出一个数字m和一个字符ch,你的操作是可以改变字 ...
随机推荐
- C#中Json的简单处理
命名空间:Windows.Data.Json在Windows Runtime中,可以使用Json类对获取的Json字符串进行操作,相比DataContractJsonSerializer类操作更加直观 ...
- canvas防画图工具
<style> body { background: black; text-align: center; } #cans { background: white; } < ...
- Visual studio每次build自动增加版本号
关键词:visual studio,rc file,VS_VERSION_INFO,FILEVERSION,PRODUCTVERSION 目标:希望每次在vs中编译项目时,生成的可执行程序版本号自动+ ...
- COGS 1570. [POJ3461]乌力波
★☆ 输入文件:oulipo.in 输出文件:oulipo.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 法国作家乔治·佩雷克(Georges Perec,1 ...
- 【人工智能系列】python的Quepy库的学习
第一篇 了解 什么是Quepy quepy是一个Python框架改造自然语言问题在数据库查询语言查询.它可以很容易地定制不同类型的问题,在自然语言和数据库查询.因此,用很少的代码,你可以建立自己的系统 ...
- TCP/IP详解之IP协议
1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制 ...
- 【转】DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的两种方式(dllexport与.def文件) DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport):另外一种方式是:采用模块定义 ...
- 网易技术分享:Nginx缓存引发的跨域惨案
推荐:更多技术团队分享文章 关注:MAYOU18技术专栏 1. 前言 贵金属wap版直播间上线后,偶尔有用户反馈,在进入wap直播间的时候,出现空白页面,但是重新刷新又可以正常显示了.我们曾一度认为是 ...
- tabl-cell
参考:http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html 总结特点 多个并排的table-cell始终等高. 宽度可以 ...
- jQuery的on绑定click和直接绑定click区别
状况之外 在之前的公司并没有遇到这个问题,也就没有深究.直到自己换了现在的公司,刚来第二天就开始写别人写到一半的项目,很无奈,不是原生就是jquery,由于项目急,已经来不及切换框架重新布局,只能继续 ...