DP LIS 记录路径 hdu 1160
2014-05-04 23:57
387 查看
按照:
W[m[1]] < W[m[2]] < ... < W[m
]
S[m[1]] > S[m[2]] > ... > S[m
]
排序
可以先排一半...#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAX 1003
struct node {
int w,s,num;
}x[MAX];
int out[MAX],dp[MAX],index[MAX];
bool cmp(node a,node b){
return a.w<b.w;
}
int main()
{
int t,n=1,i,j,k;
memset(index,0,sizeof(index));
memset(dp,0,sizeof(dp));
while(scanf("%d%d",&x
.w,&x
.s)!=EOF){
x
.num=n;
dp
=1;
n++;
}
sort(x,x+n,cmp);
for(i=1;i<=n;i++){
for(j=1;j<i;j++){
if(x[i].w>x[j].w&&x[i].s<x[j].s&&dp[j]+1>dp[i]){
dp[i]=dp[j]+1;
index[x[i].num]=x[j].num;
}
}
}
int ans=0;
for(i=1;i<=n;i++){
if(dp[i]>ans){
ans=dp[i];
k=x[i].num;//记录路径
}
}
printf("%d\n",ans);
for(i=ans;i>=1;i--){
out[i]=k;
k=index[k];
}
for(i=1;i<=ans;i++)
printf("%d\n",out[i]);
return 0;
}
W[m[1]] < W[m[2]] < ... < W[m
]
S[m[1]] > S[m[2]] > ... > S[m
]
排序
可以先排一半...#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAX 1003
struct node {
int w,s,num;
}x[MAX];
int out[MAX],dp[MAX],index[MAX];
bool cmp(node a,node b){
return a.w<b.w;
}
int main()
{
int t,n=1,i,j,k;
memset(index,0,sizeof(index));
memset(dp,0,sizeof(dp));
while(scanf("%d%d",&x
.w,&x
.s)!=EOF){
x
.num=n;
dp
=1;
n++;
}
sort(x,x+n,cmp);
for(i=1;i<=n;i++){
for(j=1;j<i;j++){
if(x[i].w>x[j].w&&x[i].s<x[j].s&&dp[j]+1>dp[i]){
dp[i]=dp[j]+1;
index[x[i].num]=x[j].num;
}
}
}
int ans=0;
for(i=1;i<=n;i++){
if(dp[i]>ans){
ans=dp[i];
k=x[i].num;//记录路径
}
}
printf("%d\n",ans);
for(i=ans;i>=1;i--){
out[i]=k;
k=index[k];
}
for(i=1;i<=ans;i++)
printf("%d\n",out[i]);
return 0;
}
相关文章推荐
- DP LIS 记录路径 hdu 1160
- 【DP|LIS+输出路径】HDU-1160 FatMouse's Speed
- 【基础dp路径记录】HDU 1160 FatMouse's Speed
- hdu1160 FatMouse's Speed--DP&记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- HDU1160 FatMouse's Speed(DP+路径记录)
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 FatMouse's Speed 【lis+记录路径】
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- hdu 1160 dp (二维最长上升子序列 记录路径
- HDU 1160(FatMouse's Speed)最长不降子序列nlogn+路径记录