poj 1952 最长递减子序列个数
2017-04-18 12:35
417 查看
题意:
求最长递减子序列的个数和长度
分析:
用num【i】记录以i结尾的最长的个数
ACcode:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define maxn 5006
#define inf 0x3f3f3f3f
#include <cstring>
#define ll long long
using namespace std;
int a[maxn];
int dp[maxn];
int num[maxn];
int my[maxn];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;++i)scanf("%d",&a[i]),dp[i]=1;
int tmp=0,ans=0,z;
for(int i=1;i<=n;++i){
bool flag=true;
for(int j=i-1;j>=1;--j)
if(a[i]==a[j]){flag=false;break;}
else if(a[j]>a[i]&&dp[j]+1>dp[i])dp[i]=dp[j]+1,num[i]=num[j];
else if(a[j]>a[i]&&dp[j]+1==dp[i])num[i]+=num[j];
if(flag)num[i]=max(num[i],1),dp[i]=max(dp[i],1);
ans=max(ans,dp[i]);
}
int res=0;
for(int i=1;i<=n;++i)if(dp[i]==ans)res+=num[i];
printf("%d %d\n",ans,res);
}
return 0;
}
求最长递减子序列的个数和长度
分析:
用num【i】记录以i结尾的最长的个数
ACcode:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define maxn 5006
#define inf 0x3f3f3f3f
#include <cstring>
#define ll long long
using namespace std;
int a[maxn];
int dp[maxn];
int num[maxn];
int my[maxn];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;++i)scanf("%d",&a[i]),dp[i]=1;
int tmp=0,ans=0,z;
for(int i=1;i<=n;++i){
bool flag=true;
for(int j=i-1;j>=1;--j)
if(a[i]==a[j]){flag=false;break;}
else if(a[j]>a[i]&&dp[j]+1>dp[i])dp[i]=dp[j]+1,num[i]=num[j];
else if(a[j]>a[i]&&dp[j]+1==dp[i])num[i]+=num[j];
if(flag)num[i]=max(num[i],1),dp[i]=max(dp[i],1);
ans=max(ans,dp[i]);
}
int res=0;
for(int i=1;i<=n;++i)if(dp[i]==ans)res+=num[i];
printf("%d %d\n",ans,res);
}
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 LITTLE SHOP OF FLOWERS(DP动归,最长递减子序列)
- BUY LOW, BUY LOWER----POJ_1952----最长递减子序列
- POJ-1952 最长下降子序列 + 方案数
- POJ 1952 BUY LOW, BUY LOWER DP 最长下降序列求个数
- POJ - 1952 BUY LOW, BUY LOWER(最长下降子序列,计数)
- POJ-1887-Testing the CATCHER-最长递减子序列-DP动态规划
- POJ 1952 BUY LOW BUY LOWER 【DP】最长降序子序列及其计数问题
- poj1952 BUY LOW, BUY LOWER(最长递减子序列及个数)
- poj 1952 最长递减子序列+求个数
- 【最长下降子序列的长度和个数】 poj 1952
- poj 1952 最长不下降子序列加最长串数
- 最长递减子序列 动态规划
- 最长递减序列与递增序列
- (Relax 后缀数组1.2)POJ 3261 Milk Patterns(求一个长度为n的整数序列中,至少出现k次的子序列的最长的长度)
- 序列的最长递增、递减序列