C++---最长上升子序列模型---友好城市(每日一道算法2023.3.2)

news2024/11/16 5:21:49

注意事项:
本题为"线性dp—最长上升子序列的长度"的扩展题,所以dp思路这里就不再赘述。

题目:
Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。
北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。
每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。
编程帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航线不相交的情况下,被批准的申请尽量多。

输入格式
第1行,一个整数N,表示城市数。
第2行到第n+1行,每行两个整数,中间用1个空格隔开,分别表示南岸和北岸的一对友好城市的坐标。

输出格式
仅一行,输出一个整数,表示政府所能批准的最多申请数。

数据范围
1≤N≤5000,
0≤xi≤10000

输入:
7
22 4
2 6
10 3
15 12
9 8
17 17
4 2
输出:
4
#include <cmath>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 5010;
pair<int, int> w[N];
int f[N];
int n;

//最长上升子序列模板,返回长度
int lis() {
    int res = 0;
    for (int i = 1; i<=n; i++) {
        f[i] = 1;
        for (int j = 1; j<i; j++) {
            if (w[j].second < w[i].second) f[i] = max(f[i], f[j] + 1);
        }
        res = max(res, f[i]);
    }
    return res;
}

int main()
{
    //读入
    cin >> n;
    for (int i = 1; i<=n; i++) cin >> w[i].first >> w[i].second;
    
    //pair的排序默认就是按照第一个元素的大小由小到大,我这里写出来是复习一下, 大家直接sort(w+1, w+n+1)即可
    sort(w+1, w+n+1, [](auto a, auto b){return a.first < b.first;});

    cout << lis();

    return 0;
}

思路:
这道题的代码很简单,难点在于对于题目思路的转换

首先分析重点:
1.每个城市只能建一座桥
2.桥与桥不能相交
目标:问最多能建多少座桥

可以画出这样一个图:
请添加图片描述
图中的圆圈就是城市,每个城市在对岸都有其对应的友好城市,以绿线连接。

到这里就能看出一个重要性质了,将某一侧的城市位置进行排序后
在对岸的友好城市位置的最长上升子序列的长度 即为 桥最多能建立的数量

这个性质是需要一些纯经验或者看脑袋的开窍程度才能在一定时间内想明白的,莫办法,多练吧呜呜呜

声明:
算法思路来源为y总,详细请见https://www.acwing.com/
本文仅用作学习记录和交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python自学之《21天学通Python》(18)——第21章 案例2 Python搞定大数据

“大数据&#xff08;Big Data&#xff09;”这个术语最早期的引用可追溯到apache org的开源项目Nutch。当时&#xff0c;大数据用来描述为更新网络搜索索引需要同时进行批量处理或分析的大量数据集。随着谷歌MapReduce和GoogleFileSystem &#xff08;GFS&#xff09;的发布&a…

第十三节 继承

什么是继承&#xff1f; java中提供一个关键字extends&#xff0c;用这个关键字&#xff0c;我们可以让一个类和另一个类建立父子关系。 public class Student extends People{} student为子类&#xff08;派生类&#xff09;&#xff0c;people为父类&#xff08;基类或者超类…

激光雷达迈向规模量产期:如何看待3类玩家的竞争格局?

激光雷达正进入规模量产周期。 高工智能汽车研究院监测数据显示&#xff0c;2022年中国市场&#xff08;不含进出口&#xff09;乘用车前装标配激光雷达交付12.99万颗&#xff0c;配套新车11.18万辆&#xff0c;同比分别增长1544.30%和2626.82%&#xff1b;预计2023年标配交付将…

第四回:文字图例尽眉目

import matplotlib import matplotlib.pyplot as plt import numpy as np import matplotlib.dates as mdates import datetime一、Figure和Axes上的文本 Matplotlib具有广泛的文本支持&#xff0c;包括对数学表达式的支持、对栅格和矢量输出的TrueType支持、具有任意旋转的换…

Python进阶-----面向对象2.0(特有属性和方法与私有属性和方法)

目录 前言&#xff1a; 1.添加特有属性/方法 示例1&#xff1a;添加特有属性 示例2&#xff1a;添加特有方法 2.私有属性/方法 &#xff08;1&#xff09;私有化示例 &#xff08;2&#xff09; 私有化属性/方法可以在类的内部使用 &#xff08;3&#xff09;强制访问私…

一:BT、BLE版本说明及对比

蓝牙版本说明1.常见名词说明2.BT&BLE特性对比3.BT各版本对比4.BLE各版对比1.常见名词说明 名称说明BR(Basic Rate)基本码率EDR(Enhanced Data Rate)增强码率BLE(Bluetooth Low Energy)低功耗蓝牙HS(High Speed)高速蓝牙BT(BlueTooth)蓝牙技术LE(Low Energy)低能耗AFH(Adap…

态路小课堂丨光模块使用可能遇到的4大问题以及注意事项!

光模块作为光通信系统的核心器件&#xff0c;其内部集成了精密的光学元件和电路元件。在日常使用过程中如果不按规定操作&#xff0c;很容易导致光模块损坏。本文态路通信为您介绍光模块在使用时可能遇到的问题&#xff0c;以及我们应该注意的事项。以此来减少光模块使用寿命&a…

Spring 事务(编程式事务、声明式事务@Transactional、事务隔离级别、事务传播机制)

文章目录1. 事务的定义2. Spring 中事务的实现2.1 MySQL 中使用事务2.2 Spring 中编程式事务的实现2.3 Spring 中声明式事务2.3.1 声明式事务的实现 Transactional2.3.2 Transactional 作用域2.3.3Transactional 参数设置2.3.4 Transactional 异常情况2.3.5 Transactional 工作…

桑基图绘制

绘制桑基图 但是关于数据流上的数据标签可能还得用ps… 注意 1、节点&#xff08;nodes&#xff09;要包括各层的&#xff0c;且不能重复&#xff0c;需要自己在后边append几个数据 2、数据流的数据要是整数&#xff0c;不能时numpy 3、注意表格加入时要再由array转为list&a…

大数据技术之Maxwell入门案例学习

大数据技术之Maxwell入门案例学习 文章目录大数据技术之Maxwell入门案例学习1、写在前面2. Maxwell 使用2.1 Maxwell 安装部署2.2 Maxwell 入门案例2.2.1 监控 Mysql 数据并在控制台打印2.2.2 监控 Mysql 数据输出到 kafka2.2.3 监控 Mysql 指定表数据输出控制台2.2.4 监控 Mys…

分布式监控系统——Zabbix(4)可视化、模板和用户参数

文章目录分布式监控系统——Zabbix&#xff08;4&#xff09;可视化、模板和用户参数一、zabbix可视化1.简介2.自定义图形&#xff08;Graphs&#xff09;3.聚合图形&#xff08;Screens&#xff09;4.幻灯片演示&#xff08;Slide shows&#xff09;5.定义拓扑图&#xff08;M…

企业电销如何获得高质量精准流量,大数据获客直击精准客流

随时社会的发展&#xff0c;时代的进步&#xff0c;各行各业都在崛起&#xff0c;竞争力愈演愈烈&#xff0c;那么为了使自己的品牌得到更多人的关注&#xff0c;自己的产品可以更好的销售&#xff0c;无数的老板在想各种缤纷的办法让自己赚钱&#xff0c;百度竞价&#xff0c;…

图像处理│一张自拍即可实现变老变年轻,带你感受时光流逝之美

✨ 目录&#x1f388; 项目效果&#x1f388; 环境搭建&#x1f388; 下载PaddleGAN&#x1f388; 安装飞浆&#x1f388; 生成图片潜码&#x1f388; 老龄化处理&#x1f388; 年轻化处理&#x1f388; 项目效果 飞浆是一个由百度推出的深度学习开发平台&#xff0c;为开发者…

Ep_MySQL基础-存储引擎

show engines; //查看mysql所支持的存储引擎&#xff0c;以及从中得到mysql默认的存储引擎 MyIsam存储引擎:(非聚集索引)->数据索引不在一起 Innodb存储引擎:(聚集索引)->数据索引在一起 MyISAM 每个MyISAM数据表&#xff0c;皆由存储在硬盘上的3个文件所组成, .f…

光学设计软件Ansys的Lumerical 2023版本下载与安装使用

文章目录前言一、许可管理工具安装二、许可管理器配置三、Lumerical安装四、工具使用配置总结前言 Lumerical是一款功能强大的软件&#xff0c;用于设计和分析从组件到系统阶段的光子学和电磁学。这个版本的Lumerical改进了电子和光子学设计工具&#xff0c;用于复杂光子学&am…

【JAVA程序设计】【C00108】基于Springboot+Vue前后端分离的民宿短租预约管理系统

基于SpringbootVue前后端分离的民宿短租预约管理系统项目简介项目获取开发环境项目技术运行截图项目简介 基于Springbootvue开发的民宿短租预订管理系统&#xff0c;共分为三种权限&#xff1a;系统管理员、商家、用户 管理员角色包含以下功能&#xff1a; 个人中心、修改密码…

C++——优先级队列(priority_queue)的使用及实现

目录 一.priority_queue的使用 1.1、基本介绍 1.2、优先级队列的定义 1.3、基本操作(常见接口的使用&#xff09; 1.4、重写仿函数支持自定义数据类型 二.priority_queue的模拟实现 2.1、构造&&重要的调整算法 2.2、常见接口的实现 push() pop() top() empt…

2023爬虫学习笔记 -- 多线程操作

一、定义一个程序开始时间程序开始时间time.time()二、创建几个网址&#xff0c;模拟目标网站网址列表[http://www.baidu.com,http://www.sogou.com,http://www.163.com]三、创建一个函数访问网站&#xff0c;模拟爬取数据操作&#xff08;耗时操作&#xff09;头{ "User-…

【C++】讲的最通透最易懂的关于结构体内存对齐的问题

目录1. 内存对齐规则2. 简单易懂的内存对齐示例2.1 简单结构体2.2 含位域的结构体2.3 空类的大小2.4 嵌套结构体3. 为什么需要内存对齐&#xff1f;4. 类型在不同系统下所占字节数1. 内存对齐规则 第一个成员在与结构体变量偏移量为0的位置处。其他成员变量要对齐到某个数字&a…

学了很久python却什么都做不了?这个方法一定要试试

很多人学了两三个月的python却什么都做不了&#xff0c;但有的人只学了不到一个月的时间&#xff0c;就可以开始自己做项目或者接私活&#xff0c;这是为什么&#xff1f; 作为20年码龄的老程序员&#xff0c;龙叔我觉得除了内在原因外&#xff0c;学习资源占据着大头。拥有好的…