poj 1952 BUY LOW, BUY LOWER dp 但去重真是令人纠结啊!!!
来源:互联网 发布:centos twisted 编辑:程序博客网 时间:2024/06/18 00:45
这道题一开始看感觉很简单,就一个降序问题,后来这个去重真是让我煞费苦心啊!!!注意b[]数组的作用
#include<iostream>
using namespace std;
int dp[5005];//记录降序长度
int a[5005];
int b[5005];//记录出显个数
int main()
{
int n;
while(cin>>n)
{
for(int i=0;i<5005;i++)
{
dp[i]=1;
b[i]=1;
}
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=1;i<n;i++)
{
for(int j=i-1;j>=0;j--)//注意顺序
{
if(a[i]<a[j])
{
if(dp[j]+1>dp[i])
{
dp[i]=dp[j]+1;
b[i]=b[j];//当符合两个if条件的时候,注意将上一个出现次数复制下来
}
else
if(dp[j]+1==dp[i])
b[i]+=b[j];//当dp[j]+1==dp[i]时,意味着a[i]这个数将同一个长度又出现一次注意这时将次数加在一起
}
else
if(a[i]==a[j])
{
if(dp[i]==1)//去重的关键,当在i到j之间如果没有dp[]使增加,意味着这个重复了,将其出现次数变为0
b[i]=0;
break;
}
}
}
int max=0;
for(int i=0;i<n;i++)
if(dp[i]>max)
max=dp[i];
int cou=0;
for(int i=0;i<n;i++)
if(dp[i]==max)
cou+=b[i];
cout<<max<<' '<<cou<<endl;
}
return 0;
}
- poj 1952 BUY LOW, BUY LOWER dp 但去重真是令人纠结啊!!!
- POJ 1952 BUY LOW, BUY LOWER(DP)
- poj 1952 buy low buy lower(DP)
- poj 1952 BUY LOW, BUY LOWER dp
- POJ 1952 BUY LOW, BUY LOWER DP
- poj 1952 BUY LOW, BUY LOWER-DP 解法
- POJ 1952 BUY LOW, BUY LOWER DP记录数据
- POJ-1952 BUY LOW, BUY LOWER(线性DP)
- pku 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
- 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 1952buy low, buy lower
- POJ 3604 Professor Ben
- 苹果悄悄对iOS5做了一个重大改动:将逐渐禁止开发者访问UDID
- 大学助理工作总结
- 【error LNK2001】: 无法解析的外部符号 _IID_IDirectDraw7
- ListView列表的用法
- poj 1952 BUY LOW, BUY LOWER dp 但去重真是令人纠结啊!!!
- MySQL的AUTO_INCREMENT
- Jquery批量判断是否为空,是否为数字
- 各大银行的软件开发中心
- 命令行运行带有package包路径的java程序
- 网页中如何设置在网页地址栏中的小图标(收藏)
- MYSQL 判断函数
- Linux里的防火墙:netfilter简介与Iptables的使用(上)
- GridView动态生成列方法