1263:【例9.7】友好城市

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 7660     通过数: 4419

【题目描述】

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

每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免事故。编程帮助政府做出一些批准和拒绝申请的决定,使得在保证任意两条航线不相交的情况下,被批准的申请尽量多。

【输入】

第1行,一个整数N(1<=N<=5000),表示城市数。

第2行到第n+1行,每行两个整数,中间用1个空格隔开,分别表示南岸和北岸的一对友好城市的坐标。(0<=xi<=10000)

【输出】

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

【输入样例】

7
22 4
2 6
10 3
15 12
9 8
17 17
4 2

【输出样例】

4

【分析】

我们将每对友好城市看成一条线段,则这道题的描述化为:有N 条线段,问最少去掉多少条线,可以使剩下的线段互不交叉?

第一,以A岸为线的起点,而B岸为线的终点,先将所有的线按照A岸起点坐标值从小到大排序,按照每条线的B岸终点坐标计算交叉数。根据样例数据,对A岸a排序后得:

如果任意两条航线不相交,则原问题转换为求B岸的最大不下降序列,B岸只有不下降才能保证线段互不交叉。数据求解过程如下:

【参考代码1】

C代码如下:由于后台数据量不大,所以,直接用比较排序即可。

#include<stdio.h>
#define N 5010struct node       //点坐标
{int a;int b;
}q[N];int f[N];int main()
{struct node t;int i,j,n,maxn,ans=0;scanf("%d",&n);for(i=1; i<=n; i++)scanf("%d%d",&q[i].a,&q[i].b);for(i=1; i<=n-1; i++)        //比较排序{for(j=i+1; j<=n; j++){if(q[i].a > q[j].a){t=q[i];q[i]=q[j];q[j]=t;}else if(q[i].a == q[j].a){if(q[i].b > q[j].b){t=q[i];q[i]=q[j];q[j]=t;}}}}f[n]=1;for(i=n-1;i>=1;i--)          //逆序求最长不下降序列 {maxn=0;for(j=i+1;j<=n;j++){if(q[i].b <= q[j].b && f[j]>maxn)maxn=f[j];}if(maxn>=0)f[i]=maxn+1;}for(i=1;i<=n;i++){if(f[i]>ans)ans=f[i];}printf("%d\n",ans);return 0;
}

【参考代码2】

C++代码如下:

#include <iostream>
#include <algorithm>using namespace std;typedef pair<int, int> PII;const int N = 5010;int n;
PII p[N];
int f[N];int main()
{cin >> n;for(int i = 1; i <= n; i++)cin >> p[i].first >> p[i].second;sort(p + 1, p + 1 + n);int ans = 0;for(int i = 1; i <= n; i++){f[i] = 1;for(int j = 1; j < i; j++)if(p[i].second > p[j].second)f[i] = max(f[i], f[j] + 1);ans = max(ans, f[i]);}cout << ans << endl;return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1263

信息学奥赛一本通(1263:【例9.7】友好城市)相关推荐

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

    [题目链接] ybt 1263:[例9.7]友好城市 [题目考点] 1. 动态规划:线性动规 2. 排序 [解题思路] 该题可以抽象为两条平行线上各有若干点,给定一些两条线上点之间的连线,在选出连线不 ...

  2. 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02

    /* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...

  3. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

  4. 信息学奥赛一本通 2021:【例4.6】最大公约数

    [题目链接] ybt 2021:[例4.6]最大公约数 [题目考点] 1. while循环 2. 求最大公约数 辗转相减法 辗转相除法 [解题思路] 解法1:枚举 取较小数字,从该数字的值开始从大到小 ...

  5. 信息学奥赛一本通(2032:【例4.18】分解质因数)

    2032:[例4.18]分解质因数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 582     通过数: 376 [题目描述] 把一个合数分解成若干个质因数乘积 ...

  6. 信息学奥赛一本通——2062:【例1.3】电影票

    2062:[例1.3]电影票 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 57341     通过数: 34230 [题目描述] 已知一位小朋友的电影票价是10 ...

  7. 信息学奥赛一本通 1278:【例9.22】复制书稿(book) | 洛谷 P1281 书的复制

    [题目链接] ybt 1278:[例9.22]复制书稿(book) 洛谷 P1281 书的复制 [题目考点] 1. 动态规划:线性动规 [解题思路] 该题可以抽象为:将由m个数字构成的序列分成k个子段 ...

  8. 信息学奥赛一本通1267:【例9.11】01背包问题(二维dp与滚动数组优化)

    [题目描述] 一个旅行者有一个最多能装 MM 公斤的背包,现在有 nn 件物品,它们的重量分别是W1,W2,...,WnW1,W2,...,Wn,它们的价值分别为C1,C2,...,CnC1,C2,. ...

  9. 信息学奥赛一本通C++语言-----2036:【例5.3】开关门

    [题目描述] 宾馆里有n(2≤n≤1000)n(2≤n≤1000) 个房间,从1∼n1∼n 编了号.第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是22 的倍数的房间"相反处理& ...

  10. 信息学奥赛一本通——2068:【例2.6】鸡兔同笼

    大家好(๑╹◡╹)ノ" 这里是小蒟蒻 一天没更新了呢! 今天给大家带来<信息学奥赛一本通--2068:[例2.6]鸡兔同笼> 题目: 2068:[例2.6]鸡兔同笼 时间限制: ...

最新文章

  1. Kubernetes集群部署(yum部署)
  2. PyTorch之深入理解list、ModuleList和Sequential。
  3. docker安装mysql指定_Docker安装MySql,并且使用外部客户端链接
  4. 本app(仿手机支付宝界面)ios源码
  5. java安装了为什么运行不了_安装jdk后运行javac可以运行,为什么不能运行java?...
  6. 基线系统需要受到更多关注:基于词向量的简单模型 | ACL 2018论文解读
  7. notify和wait
  8. scala一些奇怪的操作符的效果(持续更新中)
  9. 一个例子彻底搞懂C++的虚函数和纯虚函数
  10. Executor源码解读
  11. Oracle字符拆分函数,Oracle拆分字符串函数有哪些呢?
  12. matlab elif,MATLAB与fftfilt相当于Python
  13. 如何使用APUE源代码(UNIX高级编程)-转
  14. Java开发桌面程序学习(七)——ImageView设置图片以及jar包读取fxml文件
  15. winsock编程:关于因为头文件而报错的问题
  16. linux ssh x11,ssh服务器的x11 forwarding报错的解决
  17. PYQT5:基于QsciScintilla的代码编辑器分析10--语法高亮颜色选择
  18. ICMP数据包结构(转)
  19. 七种常见的数据分析法之:帕累托法则
  20. 第三版新视野大学英语读写教程4结业考点(1,2,3,5,6单元)

热门文章

  1. 桌面便签软件PNotes
  2. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):目录
  3. 终于有人把AI、BI、大数据、数据科学讲明白了
  4. 用户画像有什么用?怎样用?6个场景案例给你讲明白
  5. 近 5 亿人的隐私,毁于一位程序员之手?
  6. linux主机添加discuz伪静态规则,(总结)Nginx下Discuz 7.2伪静态规则设置
  7. linux总线错误无法删除文件,linux – 系统D-Bus不允许使用conf文件来破坏所有权...
  8. 每周工作4天半可行吗?人社部回应:不宜在企业中广泛推行
  9. k8s + 微服务,王炸!
  10. 低代码平台真的能拯救程序员的996吗?