POJ 3298 递推,DP

原创 2011年01月14日 23:55:00
Antimonotonicity
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 2428   Accepted: 995

Description

I have a sequence Fred of length n comprised of integers between 1 and n inclusive. The elements of Fred are pairwise distinct. I want to find a subsequence Mary of Fred that is as long as possible and has the property that:

Mary0 > Mary1 < Mary2 > Mary3 < ...

Input

The first line of input will contain a single integer T expressed in decimal with no leading zeroes. T will be at most 50. T test cases will follow.

Each test case is contained on a single line. A line describing a test case is formatted as follows:

n Fred0Fred1Fred2 ... Fredn-1.

where n and each element of Fred is an integer expressed in decimal with no leading zeroes. No line will have leading or trailing whitespace, and two adjacent integers on the same line will be separated by a single space. n will be at most 30000.

Output

For each test case, output a single integer followed by a newline --- the length of the longest subsequence Mary of Fred with the desired properties.

Sample Input

4
5 1 2 3 4 5
5 5 4 3 2 1
5 5 1 4 2 3
5 2 4 1 3 5

Sample Output

1
2
5
3

Source

利用凹凸函数,依次递推。。

Source Code

Problem: 3298   User: bingshen
Memory: 252K   Time: 172MS
Language: C++   Result: Accepted
  • Source Code
    #include<stdio.h>
    #include<string.h>
    
    int a[30005];
    
    int main()
    {
    	int i,t,n,m,ans;
    	bool s;
    	scanf("%d",&t);
    	while(t--)
    	{
    		ans=1;
    		scanf("%d",&n);
    		for(i=1;i<=n;i++)
    			scanf("%d",&a[i]);
    		m=a[1];
    		s=true;
    		for(i=2;i<=n;i++)
    		{
    			if(m<a[i]&&s)
    				m=a[i];
    			else if(m>a[i]&&!s)
    				m=a[i];
    			else if(m>a[i]&&s)
    			{
    				m=a[i];
    				s=false;
    				ans++;
    			}
    			else if(m<a[i]&&!s)
    			{
    				m=a[i];
    				s=true;
    				ans++;
    			}
    		}
    		printf("%d/n",ans);
    	}
    	return 0;
    }
    

poj 3298 Antimonotonicity DP

小菜菜说下这道题,因为15分钟搞定的,而且一次A了。 题意就是求最长的符合那个条件的序列,当然,不一定连续。   首先,如果没有任何符合条件的情况出现,那么最长的就是每个元素本身,长度为1。   思路...
  • tongyongzh
  • tongyongzh
  • 2011年07月29日 21:05
  • 944

poj 2663 递推问题

题目链接:http://bailian.openjudge.cn/practice/2663/ 描述 一张普通的国际象棋棋盘,它被分成 8 乘 8 (8 行 8 列) 的 64 个...
  • njukingway
  • njukingway
  • 2014年03月04日 11:40
  • 1410

POJ-DP题目列表【开启疯狗模式】

转载请注明出处:http://blog.csdn.net/a1dark DP是大伤、终于找到一份可以狂刷的清单、那便战个痛! 列表一:经典题目题号: 容易:  1018, 1050, ...
  • verticallimit
  • verticallimit
  • 2013年12月04日 11:05
  • 2022

【线性递推DP】hdu 5550

2015南阳CCPC的银牌题。 题意 这里曲折一下原本故事背景。 有n层楼,每层楼只有一个男厕所或者女厕所,现在每层楼的男生有ti人,女生有pi人。 他们每往上走一层或者往下走一层的花...
  • QuanQqqqq
  • QuanQqqqq
  • 2017年10月08日 11:10
  • 110

POJ dp题目列表

=▽=
  • Clove_unique
  • Clove_unique
  • 2016年10月18日 21:47
  • 540

leetcode -- 解题总结--DP与DFS, 递归

如果是求什么最小值或者判断是否存在,等求数字的题目,用dp如果是求所有possible solutions,用DFS backtracking...
  • xyqzki
  • xyqzki
  • 2015年12月16日 22:08
  • 823

[DP 数论] 51Nod 1201 整数划分

dp[i][j] 代表用j个数字的和为i的数的个数 dp[i][j] = dp[i - j][j - 1] + dp[i - j][j](不过好像不太对) 把所有的数都加上1,然后再额外的给出...
  • u014609452
  • u014609452
  • 2016年11月22日 14:22
  • 150

[POJ1948]Triangular Pastures(背包dp)

Courage isn’t having the strength to go on. It’s going on when you don’t have strength. 勇气不是让你继续的力量。...
  • Clove_unique
  • Clove_unique
  • 2016年10月16日 17:27
  • 217

股票买卖(dp之路)

8464:股票买卖 查看提交统计提问 总时间限制: 1000ms内存限制: 65536kB 描述 最近越来越多的人都投身股市,阿福也有点心动了。谨记着“股市有风险,入市需谨慎”...
  • jklcl
  • jklcl
  • 2017年02月08日 21:00
  • 643

poj 几道简单的dp题

题目:poj 1836题意: 求使数列程先递增后递减的形式需要去掉的数字个数。当然也可以直接递减或者只递减不递增。 分析: 用最长递增子序列的方法求,然后枚举两个起点的位置即可。#include...
  • hjt_fathomless
  • hjt_fathomless
  • 2016年07月19日 10:19
  • 542
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 3298 递推,DP
举报原因:
原因补充:

(最多只允许输入30个字)