hdu 1160 DP 最长子序列问题
2010-06-29 14:25
351 查看
//Accepted 1160 15MS 264K 1027 B C++
//dp题 转化为求最长子序列问题
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
struct node{
int weight;
int speed;
int order;
};
node mice[1002];
bool cmp(node a,node b)
{
if(a.weight != b.weight)
return a.weight < b.weight;
else
return a.speed > b.speed;
}
int b = 1,f[1002],d[1002],res[1002];
int main()
{
int w,s,n,size;
int i,j,num;
size = 1;
while(scanf("%d%d",&mice[b].weight,&mice[b].speed)!= EOF)
{
mice[b].order = b;
b++;
}
sort(&mice[1],&mice[1] + b - 1,cmp);
d[1] = 1;
num = 1;
for(i = 1; i < b; i++)
{
f[i] = 1;
for(j = 1; j < i; j++)
{
if(f[j] + 1 > f[i] && (mice[j].weight < mice[i].weight && mice[j].speed > mice[i].speed))
{
f[i] = f[j] + 1;
d[i] = j;
if(f[i] >= size)
{
size = f[i];
num = i;
}
}
}
}
b = size;
for(i = num; i >= 1; i = d[i])
{
res[b--] = mice[i].order;
}
printf("%d/n",size);
for(i = 1; i <= size; i++)
{
printf("%d/n",res[i]);
}
}
//dp题 转化为求最长子序列问题
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
struct node{
int weight;
int speed;
int order;
};
node mice[1002];
bool cmp(node a,node b)
{
if(a.weight != b.weight)
return a.weight < b.weight;
else
return a.speed > b.speed;
}
int b = 1,f[1002],d[1002],res[1002];
int main()
{
int w,s,n,size;
int i,j,num;
size = 1;
while(scanf("%d%d",&mice[b].weight,&mice[b].speed)!= EOF)
{
mice[b].order = b;
b++;
}
sort(&mice[1],&mice[1] + b - 1,cmp);
d[1] = 1;
num = 1;
for(i = 1; i < b; i++)
{
f[i] = 1;
for(j = 1; j < i; j++)
{
if(f[j] + 1 > f[i] && (mice[j].weight < mice[i].weight && mice[j].speed > mice[i].speed))
{
f[i] = f[j] + 1;
d[i] = j;
if(f[i] >= size)
{
size = f[i];
num = i;
}
}
}
}
b = size;
for(i = num; i >= 1; i = d[i])
{
res[b--] = mice[i].order;
}
printf("%d/n",size);
for(i = 1; i <= size; i++)
{
printf("%d/n",res[i]);
}
}
相关文章推荐
- HDU 1160 FatMouse's Speed (dp, 最长子序列)
- HDU 1160 FatMouse's Speed--dP--(元素1递增元素2递降的最长子序列)
- hdu 1160 FatMouse's Speed (dp---最长有序子序列)
- HDU 1231 最大连续子序列 &&HDU 1003Max Sum (区间dp问题)
- HDU 4521 小明系列问题——小明序列 DP – LIS加强版 #by Plato
- 小明系列问题——小明序列 - HDU 4521 DP
- HDU - 4521 小明系列问题――小明序列 (LIS&DP)好题
- HDU 4521 小明系列问题——小明序列 (线段树维护DP)
- 公主和王子能在一起多久的问题+dp+最长公共子序列转最长子序列。
- HDU 1231 最大连续子序列 &&HDU 1003Max Sum (区间dp问题)
- HDU 4521 小明系列问题――小明序列 (DP)
- FatMouse's Speed HDU - 1160 --dp的路径记忆问题
- HDU 4521 小明系列问题——小明序列 (线段树维护DP)
- HDU 4521 小明系列问题——小明序列 (DP)
- NYOJ 题目17 单调递增最长子序列 (DP) hdu 题目2845 Bean
- 用DP解决最长子序列问题
- HDU 4521 2013腾讯编程马拉松初赛第四场 小明系列问题——小明序列(dp思想+线段树优化)
- zju 1108||hdu 1160 FatMouse's Speed(dp,最长单调序列)
- hdu--1231--最长子序列(DP)
- hdu1160 最大上升子序列问题+输出路径