【最长下降子序列】北大 poj 1952 BUY LOW, BUY LOWER
来源:互联网 发布:淘宝平板客户端 编辑:程序博客网 时间:2024/05/17 01:56
/* THE PROGRAM IS MADE BY PYY *//*----------------------------------------------------------------------------// Copyright (c) 2012 panyanyany All rights reserved. URL : http://poj.org/problem?id=1952 Name : 1952 BUY LOW, BUY LOWER Date : Tuesday, July 10, 2012 Time Stage : 2 hours Result:0411693panyanyany1952Accepted224K172MSC++1970B2012-07-10 09:44:02Test Data :Review :参考:http://blog.acmj1991.com/?p=606//----------------------------------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <vector>#include <algorithm>#include <iostream>#include <queue>#include <set>#include <string>using namespace std ;#define MEM(a, v) memset (a, v, sizeof (a)) // a for address, v for value#define max(x, y) ((x) > (y) ? (x) : (y))#define min(x, y) ((x) < (y) ? (x) : (y))#define INF (0x3f3f3f3f)#define MAXN(5005)#define L(x)((x)<<1)#define R(x)(((x)<<1)|1)#define M(x, y)(((x)+(y)) >> 1)#define DB //int sum, a[MAXN], dp[MAXN], route[MAXN];int LIS(int a[], int n){int i, j;for (i = 0; i < n; ++i){dp[i] = 1;route[i] = 1;for (j = 0; j < i; ++j){if (a[j] > a[i]){if (dp[j] + 1 > dp[i]){route[i] = route[j];dp[i] = dp[j] + 1;}else if (dp[j] + 1 == dp[i]){route[i] += route[j];}}}// 去重,比如 5 2 3 2,当 i==3时,计算到第2个2,那么对于以后的数来// 说,第1个2的route就是多余的了。因为凡是比2小的数,比如1,显然跟第2个2// 比较更好,因为(dp[3] = 3) > (dp[1] = 2)。然后再普及到一般的情况:// 5 2 1 2, 此时两个2的route和dp都一样,所以第一个2多余.for (j = 0; j < i; ++j)if (a[i] == a[j])route[j] = 0;}j = 0;for (i = 0; i < n; ++i){if (dp[j] < dp[i])j = i;}for (i = 0; i < n; ++i)if (i != j && dp[j] == dp[i])route[j] += route[i];return j;}int main(){int i, j, n;while (scanf("%d", &n) != EOF){for (i = 0; i < n; ++i)scanf("%d", a+i);j = LIS(a, n);printf("%d ", dp[j]);printf("%d\n", route[j]);}return 0;}
- 【最长下降子序列】北大 poj 1952 BUY LOW, BUY LOWER
- poj 1952 BUY LOW, BUY LOWER(求最长下降子序列个数)
- poj 1952 BUY LOW, BUY LOWER 最长下降子序列+统计不重复方案数
- poj 1952 BUY LOW, BUY LOWER 最长下降子序列计数
- POJ 1952 BUY LOW, BUY LOWER DP 最长下降序列求个数
- poj 1952 BUY LOW, BUY LOWER (最长递减子序列+不同子序列计数)
- POJ 1952 BUY LOW BUY LOWER 【DP】最长降序子序列及其计数问题
- poj 1952 BUY LOW, BUY LOWER[最长单调子序列变形]
- POJ 1952 BUY LOW,BUY LOWER 最长递减子序列 动态规划
- POJ1952 BUY LOW, BUY LOWER(DP,最长下降子序列不重复计数)
- BUY LOW, BUY LOWER----POJ_1952----最长递减子序列
- POJ 1552 BUY LOW, BUY LOWER(最长单调递减子序列求方案数)
- POJ 1952 BUY LOW, BUY LOWER(DP)
- POJ 1952 BUY LOW, BUY LOWER
- poj 1952 BUY LOW, BUY LOWER
- POJ 1952 buy low,buy lower
- poj 1952 buy low buy lower(DP)
- poj 1952 Buy low, buy lower
- 《参禅与悟道》——浅谈人生
- 一道面试题
- js javascript图层的弹出 背景变灰 和js图层的移动 及相关资料
- SQL Server索引的使用和优化
- 2012.07.10 Android Wifi模块分析
- 【最长下降子序列】北大 poj 1952 BUY LOW, BUY LOWER
- DIV+CSS浏览器兼容问题
- CSS按钮样式大全
- php 变量
- 安装Vmwtools 与SAMBA 共享文件
- Linux proc详解
- [C#]实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- 使用Oracle的DBMS_SQL包执行动态SQL语句
- [转] c++中关于return的用法总结