题目分析:

最长上升子序列的变形题。


问题描述

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

原因分析:

本题主要考察思维 已知友好城市已经固定 每个城市最多与其他城市建一个桥 转化为的题目是:
开始给定了一些边 然后需要满足留下的边的个数最大 并且不相交的条件
观察性质 如果将下边的点进行排序 要满足建桥时不相交 那么上面的城市一定是上升的序列
因此 本题可以转换为排序+上升子序列的解法


实现代码:

//朴素版本 时间复杂度O(n^2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef pair<int,int> PII;//因为题目中所给的友好城市是成对出现的 定义pair存储一对城市
const int N = 5010;
int f[N];//这里f[i]指的是以第i个元素结尾 构成的上升子序列中长度最大的值
int n;
PII q[N];
int main(){cin>>n;for(int i=1;i<=n;i++) cin>>q[i].first>>q[i].second;//对下游城市进行排序sort(q+1,q+n+1);//求最大上升子序列长度的方法for(int i=1;i<=n;i++){//刚开始的时候f[i]一定会包含只含有a[i]这种情况 此时的最大上升子序列长度为1f[i] = 1;//求倒数第二个值 当倒数第二个值小于a[i]时 此时的长度为f[j]+1for(int j=1;j<i;j++){if(q[i].second>q[j].second)f[i] = max(f[i],f[j]+1);}}//最大上升子序列的长度为f[i]中以a[i]结尾时长度最大的那个int res = -0x3f3f3f3f;for(int i =1;i<=n;i++) res = max(res,f[i]);cout<<res<<endl;return 0;}

Acwing 1012. 友好城市相关推荐

  1. [AcWing] 1012. 友好城市(C++实现)最长上升子序列模型、较为特殊

    [AcWing] 1012. 友好城市(C++实现)最长上升子序列模型 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总 ...

  2. AcWing 1012 友好城市

    Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的 N NN 个城市. 北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同. 每对友好城市都向政府申请在 ...

  3. AcWing 1012. 友好城市(最长上升子序列dp)

    如果任意两个城市不会发生交叉,那么两座城市在南北两侧的顺序应该是相同的.若给任意一侧的城市按顺序编号,那么要想不出现交叉的现象在另一侧对应城市的编号顺序一定是单调递增或递减的.如此可得,将某一侧城市按 ...

  4. ACWing算法提高课 友好城市

    ACWing算法提高课 友好城市 Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市. 北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同. 每 ...

  5. 【JZOJ5064】【GDOI2017第二轮模拟day2】友好城市 Kosarajo算法+bitset+ST表+分块

    题面 在Byteland 一共有n 座城市,编号依次为1 到n,这些城市之间通过m 条单向公路连接. 对于两座不同的城市a 和b,如果a 能通过这些单向道路直接或间接到达b,且b 也能如此到达a,那么 ...

  6. AC日记——友好城市 洛谷 P2782

    题目背景 无 题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.没对友好城市都向政府申请在河上 ...

  7. 【洛谷 2782】友好城市

    题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.每对友好城市都向政府申请在河上开辟一条直线航 ...

  8. P2782 友好城市

    题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.每对友好城市都向政府申请在河上开辟一条直线航 ...

  9. 信息学奥赛一本通(1263:【例9.7】友好城市)

    1263:[例9.7]友好城市 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 7660     通过数: 4419 [题目描述] Palmia国有一条横贯东西的大 ...

最新文章

  1. OCS2007安装配置指南
  2. ASP.NET设置焦点到输入框
  3. Flutter学习之认知基础组件
  4. windows live writer向cnblog发布文章设置(转)
  5. 数据库的开发笔记-字典表
  6. 关于CDN加速服务器的几个问题
  7. 常用css样式属性大全(中文注释)
  8. AI即开即用,这是悄然推出的“腾讯最新AI技术”小程序
  9. 最详细的Android SDK下载安装及配置教程
  10. 太厉害了MySQL总结的太全面了
  11. membase数据库_Meta分析之文献检索步骤
  12. ubuntu企业微信解决无法查看、发送图片
  13. 【钉钉-场景化能力包】会展入场
  14. 关于insight数据库价格与价值的双重选择
  15. conda创建虚拟环境后文件夹中只有conda-meta文件夹,无法将环境添加到pycharm中
  16. for the love,for the dream
  17. MFRC522应用详解
  18. 去除字符串首尾空格(全角半角)
  19. windows下xampp安装
  20. css 径向渐变实现渐变小圈

热门文章

  1. 适合程序员的优秀学习类网站
  2. mysql 批量插入12位随机数字
  3. [2018.12.4]斜率优化(以[Apio2010]特别行动队为例)
  4. zabbix 个性化设置
  5. 瞬态电压抑制二极管的使用指导
  6. mysql 自然数集合_Mysql基本操作
  7. detectron2训练自己的数据集和转coco格式
  8. 小本创业,要精打细算
  9. 【物理篇】从零搭建2D物理系统①——刚体和碰撞检测事件
  10. Qt文件对话框:QFileDialog入门教程