51nod 1055 最长等差数列
来源:互联网 发布:导航升级软件下载 编辑:程序博客网 时间:2024/05/23 17:22
n^2的算法可以做,先给数组a进行排序,遍历a【i】,让j=i-1,k=i+1.if(a[j]+a[k]>a[i])j--
if(a[j]+a[k]<a[i])k++,等于的话就是一个等差数列。所以要有dp【i】【k】记录以前的状态。
dp[i][j]代表以a[i],a[j]结尾的等差数列有多少个
4
1 2 3 4
这组测试数据看着代码想想就可以了。
#include <iostream>#include<bits/stdc++.h>#define ll long longusing namespace std;int a[10010];short int dp[10009][10009],ans=2;int main(){ int n; scanf("%d",&n); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++)scanf("%d",&a[i]); sort(a+1,a+n+1); for(int i=2;i<=n;i++) { int j=i-1,k=i+1; while(j>0&&k<=n) { if(a[j]+a[k]>2*a[i])j--; else if(a[j]+a[k]<2*a[i])k++; else { dp[i][k]=(dp[j][i]==0?3:dp[j][i]+1); ans=max(ans,dp[i][k]); j--; k++; } } } printf("%d\n",ans); return 0;}
阅读全文
0 0
- 51nod 1055:最长等差数列
- 51nod-1055 最长等差数列
- 51Nod-1055-最长等差数列
- 51nod 1055 最长等差数列
- 51nod 1055 最长等差数列
- 51nod 1055 最长等差数列
- 51nod-1055-最长等差数列
- 51nod 1055 最长等差数列
- 51nod 1055 最长等差数列
- 51Nod 1055 最长等差数列
- 51nod 1055最长等差数列 dp
- [DP Hash] 51Nod 1055 最长等差数列
- 51Nod 1055 最长等差数列问题
- 51 nod 1055 最长等差数列(DP)
- 51Nod-1054-最长等差数列
- 【51nod 1055 & 1056】最长等差数列及V2 题解
- [51nod 1056]最长等差数列V2
- 51nod 1056 最长等差数列 V2
- plist 文件详解
- 解密回声消除技术之一(理论篇)
- 天天和不可描述
- (二十三)Animator 实例 —— 开场动画
- 微信公众号支付开发流程与避坑手册-Java篇
- 51nod 1055 最长等差数列
- 嵌入式多路温湿度监控系统(三主控程序之串口采集线程)
- <学习笔记>jar包置放在WEB-INF/lib下和通过build path导入的区别是什么
- Modbus协议学习(三)
- angular如何实现不同模块的变量共享
- 使用IOCP需要注意的一些问题~~(不断补充)
- 操作系统之计算机系统概述(1.1)一张图图解计算机系统基本构成
- 解密回声消除技术之二(应用篇)
- c、java移位操作