首页 > 其他分享 >51nod 1055 最长等差数列

51nod 1055 最长等差数列

时间:2023-04-04 12:03:24浏览次数:40  
标签:10 13 12 1055 51nod 等差数列 最长 dp 14



1055 最长等差数列



基准时间限制:2 秒 空间限制:262144 KB 分值: 80  难度:5级算法题



 收藏

 关注



例如:1 3 5 6 8 9 10 12 13 14


等差子数列包括(仅包括两项的不列举)


1 3 5


1 5 9 13


3 6 9 12


3 8 13


5 9 13


6 8 10 12 14



其中6 8 10 12 14最长,长度为5。


Input


第1行:N,N为正整数的数量(3 <= N <= 10000)。第2 - N+1行:N个正整数。(2<= A[i] <= 10^9)


Output


最长等差数列的长度。


Input示例


10135 6 8 9 10 12 13 14


Output示例


5






【分析】

首先这题是可以排序的...不要求生成的答案也满足原来的数字顺序。

然后用dp[i][j]表示以i,j为首两项的最长等差子序列长度。从后往前DP即可。



【代码】

//51nod 1055
#include<bits/stdc++.h>
#define ll long long
#define M(a) memset(a,0,sizeof a)
#define fo(i,j,k) for(i=j;i<=k;i++)
using namespace std;
const int mxn=10001;
int n,m,T;
short ans;
int a[mxn];
short dp[mxn][mxn];
int main()
{
	int i,j,k;
	scanf("%d",&n);
	fo(i,1,n) scanf("%d",&a[i]);
	sort(a+1,a+n+1);
	fo(i,1,n) fo(j,i+1,n) dp[i][j]=2;
	for(j=n-1;j>=2;j--)
	{
		i=j-1,k=i+1;
		while(i>=1 && k<=n)
		{
			if(a[i]+a[k]<2*a[j]) k++;
			else if(a[i]+a[k]>2*a[j]) i--;
			else dp[i][j]=max(dp[i][j],(short)(dp[j][k]+1)),k++,i--;
		}
	}
	fo(i,1,n) fo(j,i+1,n) ans=max(ans,dp[i][j]);
	printf("%d\n",ans);
	return 0;
}



标签:10,13,12,1055,51nod,等差数列,最长,dp,14
From: https://blog.51cto.com/u_15967757/6168368

相关文章

  • 51nod 1799 二分答案
    1799二分答案基准时间限制:1秒空间限制:131072KB分值:40难度:4级算法题收藏关注lyk最近在研究二分答案类的问题。对于一个有n个互不相同的数且从小到大的正整数数列a(其中最大值不超过n),若要找一个在a中出现过的数字m,一个正确的二分程序是这样子的:l=1;r=n;mid=(l+r)/......
  • 51nod 1551 集合交易
    1551 集合交易题目来源: CodeForces基准时间限制:1 秒空间限制:131072 KB分值: 320 难度:7级算法题 收藏 关注市场中有n个集合在卖。我们想买到满足以下要求的一些集合,所买到集合的个数要等于所有买到的集合合并后的元素的个数......
  • 51nod 1370 排列与操作
    1370 排列与操作题目来源: TopCoder基准时间限制:2 秒空间限制:131072 KB分值: 320 难度:7级算法题 收藏 关注给定N长排列P,其中排列指数集{1,2,3...N}组成的一个序列,序列中每个元素恰好出现一次。初始时这个排列是给出的。之......
  • 51nod 1486 大大走格子
    1486 大大走格子题目来源: CodeForces基准时间限制:1 秒空间限制:131072 KB分值: 160 难度:6级算法题 收藏 关注有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数。Input单组测试数据......
  • 51nod 1149 Pi的递推式
    1149 Pi的递推式基准时间限制:1 秒空间限制:131072 KB分值: 640 难度:8级算法题 收藏 关注F(x)=1(0<=x<4)F(x)=F(x-1)+F(x-pi)(4<=x)Pi=3.1415926535.....现在给出一个N,求F(N)。由于结果巨......
  • [第十届蓝桥杯省赛C++B组]等差数列
    来源:第十届蓝桥杯省赛C++B组算法标签:数论最大公约数题目描述数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N个整数。现在给......
  • P8682 [蓝桥杯 2019 省 B] 等差数列
    P8682[蓝桥杯2019省B]等差数列[蓝桥杯2019省B]等差数列题目描述数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N......
  • 413.等差数列划分
    等差数列划分如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7]和[3,-1,-5,-9]都是等差数列。给你一个......
  • mysql8.0 sql_mode 报错1055
    Mysql的8.0版本中默认是开启sql_mode=only_full_group_by。可能会导致1055报错,要关闭的话可以这样操作在MySQL下执行语句SELECT@@sql_mode将查询结果中的ONLY_FULL_GR......
  • 51Nod1019 逆序数(归并排序详解)
    逆序对给定一个1-N的排列A1,A2,...AN,如果Ai和Aj满足i<j且Ai>Aj,我们就称(Ai,Aj)是一个逆序对。 求A1,A2...AN中所有逆序对的数目。input 第一行包含一个整数N......