#404轮船问题 题解

这明明是一道很水很经典的入门DP。
然后我炸了。

题目就是在一条路两边有很多点 每个点都有在路的另一边与之对应的“朋友点”
然后连接所有点与“朋友点” 问最多有多少条不相交的线

第一下想到的是定义一个结构体 两两放一起然后排序   dp方程很好写
f[i]=max(f[i],f[j]+1)

在没有写dp方程之前我傻傻地根据样例想着排序, a.north<b.south 这样就可以很好地分成两个序列了。
4  5
2  4
5  2
1  3
3  1 
这样排出来的话 就是

1 3
2 4
4 5
3 1
5 2 然后求一下south的最长上升子序列就好
然而 这只是样例 因为我们写的mycmp没有规定a.north与b.north的关系,所以出排序得到的值不会像样例的这样听话

然后当时就试着改成pair (猛地拍脑袋 我怕不是傻了)
最后终于是弄出来了,。,,

#include<bits/stdc++.h>
using namespace std;
int x,y,n;
struct cities{
 int north,south;
}city[6000]={}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值