Arithmetic Sequence(dp)
Arithmetic Sequence
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 51 Solved: 19
[Submit][Status][Web Board]
Description
Giving a number sequence A with length n, you should choosingm numbers from A(ignore the order) which can form an arithmetic sequence and make m as large as possible.
Input
There are multiple test cases. In each test case, the first line contains a positive integer n. The second line contains nintegers separated by spaces, indicating the number sequenceA. All the integers are positive and not more than 2000. The input will end by EOF.
Output
For each test case, output the maximum as the answer in one line.
Sample Input
- 5
- 1 3 5 7 10
- 8
- 4 2 7 11 3 1 9 5
Sample Output
- 4
- 6
HINT
In the first test case, you should choose 1,3,5,7 to form the arithmetic sequence and its length is 4.
In the second test case, you should choose 1,3,5,7,9,11 and the length is 6.
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- int dp[][];
- int a[];
- int main(){
- int N;
- while(~scanf("%d", &N)){
- for(int i = ; i < N; i++){
- scanf("%d", a + i);
- }
- sort(a, a + N);
- int ans = ;
- for(int i = ; i < N; i++){
- for(int k = ; k <= ; k++){
- dp[i][k] = ;
- }
- }
- for(int i = ; i < N; i++){
- for(int j = ; j < i; j++){
- int d = a[i] - a[j];
- dp[i][d] = dp[j][d] + ;
- ans = max(ans, dp[i][d] + );
- }
- }
- printf("%d\n", ans);
- }
- return ;
- }
java:
- import java.util.Arrays;
- import java.util.Scanner;
- public class ArithmeticSequence{
- static int[][] dp = new int[][];
- public static void main(String[] args){
- Scanner cin = new Scanner(System.in);
- int N;
- while(cin.hasNext()){
- N = cin.nextInt();
- int[] a = new int[N];
- for(int i = ; i < a.length; i++){
- a[i] = cin.nextInt();
- }
- Arrays.sort(a);
- int ans = ;
- for(int i = ; i < N; i++){
- for(int k = ; k <= ; k++){
- dp[i][k] = ;
- }
- }
- for(int i = ; i < a.length; i++){
- for(int j = ; j < i; j++){
- int d = a[i] - a[j];
- dp[i][d] = dp[j][d] + ;
- ans = Math.max(ans, dp[i][d] + );
- }
- }
- System.out.println(ans);
- }
- }
- }
dp;
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- int dp[];
- int a[];
- int main(){
- int N;
- while(~scanf("%d", &N)){
- for(int i = ; i < N; i++){
- scanf("%d", a + i);
- }
- sort(a, a + N);
- int ans = ;
- for(int i = ; i <= ; i++){
- for(int k = ; k <= ; k++){
- dp[k] = ;
- }
- for(int j = ; j < N; j++){
- if(a[j] >= i)dp[a[j]] = max(dp[a[j] - i] + , dp[a[j]]);
- else dp[a[j]] = ;
- ans = max(ans, dp[a[j]]);
- }
- }
- printf("%d\n", ans);
- }
- return ;
- }
Arithmetic Sequence(dp)的更多相关文章
- hdu 5400 Arithmetic Sequence(模拟)
Problem Description A sequence b1,b2,⋯,bn are called (d1,d2)-arithmetic sequence ≤i≤n) such that ≤j& ...
- Codeforces Beta Round #13 C. Sequence (DP)
题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...
- cf13C Sequence(DP)
题意: N个数.a1...aN. 对于每个数而言,每一步只能加一或减一. 问最少总共需要多少步使得新序列是非递减序列. N (1 ≤ N ≤ 5000) 思路: *一个还不知道怎么证明的结论(待证): ...
- codeforces 486 E. LIS of Sequence(dp)
题目链接:http://codeforces.com/contest/486/problem/E 题意:给出n个数,如果一个数满足不属于最长递增序列,那么输出1,如果属于最长递增序列但是不属于所有最长 ...
- URAL 1183 Brackets Sequence(DP)
题目链接 题意 : 给你一串由括号组成的串,让你添加最少的括号使该串匹配. 思路 : 黑书上的DP.dp[i][j] = min{dp[i+1][j-1] (sh[i] == sh[j]),dp[i] ...
- 【ZJOI2017 Round1练习】D8T2 sequence(DP)
题意: 思路: #include <algorithm> #include <iostream> #include <cstring> #include <c ...
- Atcoder E - RGB Sequence(dp)
题目链接:http://arc074.contest.atcoder.jp/tasks/arc074_c 题意:一共有3种颜色,红色,绿色,蓝色.给出m个要求l,r,x表示在区间[l,r]内要有x种不 ...
- 【Codeforces】CF 5 C Longest Regular Bracket Sequence(dp)
题目 传送门:QWQ 分析 洛谷题解里有一位大佬讲的很好. 就是先用栈预处理出可以匹配的左右括号在数组中设为1 其他为0 最后求一下最长连续1的数量. 代码 #include <bits/std ...
- 【UVa】Wavio Sequence(dp)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
随机推荐
- JavaScript运算符有哪些
JavaScript中的运算符有很多,主要分为算术运算符,等同全同运算符,比较运算符,字符串运算符,逻辑运算符,赋值运算符等.这些运算符都有一些属于自己的运算规则,下面就为大家介绍一下JavaScri ...
- laravel3中文文档是迈入laravel4的捷径
http://v3.golaravel.com/docs/ 目录 Laravel概览 更新日志 安装与设置 系统需求 安装 服务器设置 基本设置 环境 友好的链接(URL) 路由 基础 通配符(Wil ...
- [Unit Testing] Based on input value, spyOn function
describe( 'Forgot Password: with username', ()=> { let dirElementInput; beforeEach( ()=> { // ...
- Linux的启动流程
1.首先是bios加电自检.初始化,这个过程会检测相关硬件(cpu.内存.硬盘等),然后会读取硬盘中的MBR:2.加载内核,读取/boot里边的配置文件:3.启动初始化进程,开始运行/sbin/ini ...
- (一)Activity参数传递
1.主Activity,用于启动另一个Activity()public class MainActivity extends Activity { @Override protected void o ...
- .net中div置于顶层+iframe
aspx代码: <td> <asp:Button ID="BtnDownPPT" runat="server" OnClientClick= ...
- va_list/va_start/va_arg/va_end深入分析
http://www.cnblogs.com/justinzhang/archive/2011/09/29/2195969.html
- log4j配置文件及nutch中的日志配置
使用slf4j作为日志系统时,由于slf4j只是一个接口,它需要一个具体实现来执行. 具体参考http://blog.csdn.net/jediael_lu/article/details/43854 ...
- 丰富的else语句及简洁的with语句 - 零基础入门学习Python034
丰富的else语句及简洁的with语句 让编程改变世界 Change the world by program 丰富的else语句 有鱼油可能会说,else语句还有啥好讲的?经常跟if语句进行搭配用于 ...
- HTTP 协议简介
HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...