(蒟蒻的DP入门 03)洛谷P2782 友好城市(DP问题的预处理)

本文分析了洛谷P2782友好的城市问题,讲解如何利用动态规划(DP)解决此类问题。关键在于判断问题是否适合使用DP,并分解复杂问题。通过排序起点并寻找终点的最长不下降子序列来避免冲突。文中提供了预处理代码,并强调要求解最长不下降子序列时需使用nlogn算法。
摘要由CSDN通过智能技术生成

一、算法分析

所有DP类问题肯定都不是裸题放那里考,所以对DP类问题的解题关键也在于判断其能否用DP来做,以及如何将复杂问题分解为熟悉的类型(如线性DP、树上的DP等),比如这道题友好城市,A桥和B桥不相交的条件显然是两座桥的起点的相对位置和终点的相对位置是一致的,比如第一座桥起点在第二座桥起点的西边,那么第一座桥的终点也应该在第一座桥终点的西边。那么如何建最多的桥呢?这里就要把问题进行分解从而简化,我们可以将起点排序,这样从起点来看就不会发生冲突,那么冲突就只能发生在终点上,然后我们只要找终点的一个最长不下降子序列即可。

二、代码

using namespace std;
const int maxn=2e5+5;
struct line{
   
	int bg;
	int ed;
    line(int b,int e):bg(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值