题目描述

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

输入格式

第1行,一个整数N,表示城市数。

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

输出格式

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

输入输出样例

输入

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

输出

4

说明/提示

50% 1<=N<=5000,0<=xi<=10000

100% 1<=N<=2e5,0<=xi<=1e6

直接代码放上

#include<stdio.h>
#include<malloc.h>
int quick(int str[],int a[],int x,int y);//自定义快排
int max(int a,int b);
int main()
{int n,i,j,ans=1;scanf("%d",&n);int *N=(int *)malloc(sizeof(int)*n);int *S=(int *)malloc(sizeof(int)*n);int *dp=(int *)malloc(sizeof(int)*n);for(i=0;i<n;i++){scanf("%d %d",&N[i],&S[i]);}quick(N,S,0,n);for(i=0;i<n;i++)//lis求最长上升序列{dp[i]=1;for(j=0;j<i;j++){if(S[j]<S[i]){if(dp[i]<max(1,dp[j]+1)){dp[i]=max(1,dp[j]+1);ans=max(ans,dp[i]);}}}}printf("%d",ans);return 0;}
int quick(int str[],int a[],int x,int y)//找中间数
{if(x<y) {int t,j,k;t=x;j=y-1;while(t!=j){for(j;j>t;j--){if(str[t]>str[j]){k=str[t];str[t]=str[j];str[j]=k;k=a[t];a[t]=a[j];a[j]=k;break;}}for(t;t<j;t++){if(str[t]>str[j]){k=str[t];str[t]=str[j];str[j]=k;k=a[t];a[t]=a[j];a[j]=k;break;}}}quick(str,a,x,t);quick(str,a,t+1,y);
}
}
int max(int a,int b)
{if(a<b)return b;elsereturn a;
}

tip:代码本身没有问题,但是在洛谷上只能跑50分,因为测试数据过大会超时,这可能是用C语言做OJ比不上C++吧,如果想跑AC的话可能要对算法优化 ,但是快排已经很优化了。。。。

P2782友好城市(LIS,动态规划dp)C语言版相关推荐

  1. P2782 友好城市

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

  2. 友好城市(线性dp)

    友好城市2 时间限制:1秒        内存限制:125M 题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市 ...

  3. 洛谷 P2782 友好城市

    题目链接:友好城市 - 洛谷 思路:对两组河东河西的坐标,如果x1>x2,但y1<y2则会交叉.所以可以将n对城市按x排序,求y的最长上升子序列. dp法:(超时) #include< ...

  4. 不止代码:友好城市(动态规划)

    解析 先按左端点排序得到一个右端点的新队列,然后就可以发现: 所有合法的方案都是新队列的一个单调递增队列 然后就转化成了最长上升序列的问题 代码 #include<bits/stdc++.h&g ...

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

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

  6. 【动态规划】友好城市

    第二天叫醒我的不是闹钟,是梦想! 题目描述 一条河从东向西流过,并把魔法世界分为南北两个部分.河的两岸各有n个城市,且北岸的每一个城市都与南岸的某个城市是友好城市,而且对应的关系是一一对应的,如图所示 ...

  7. 动态规划7--例9.7友好城市

    1263:[例9.7]友好城市 [题目描述] Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市. 北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市 ...

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

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

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

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

最新文章

  1. java 文件拷贝文件怎么打开_java如何拷贝文件
  2. nChain首席科学家CSW:闪电网络会把BCE变成空洞的幽灵
  3. JS知识点笔记-常用方法
  4. CSS基础_Day04
  5. php随机数字不重复,php生成N个不重复的随机数
  6. java.util.concurrent.Locks使用指南
  7. elementui下拉框选择图片_Element UI系列:Select下拉框实现默认选择
  8. react-native this使用笔记
  9. jdbc 自增id 原理_如何实现 Oracle 的自增序列,两步轻松搞定
  10. OpenTSDB的读写API
  11. String s = new String(“abc“)创建了几个对象
  12. PROTEL技术应用技巧总结
  13. Zepto Api参考
  14. 序列二次规划——SQP
  15. Windows 有哪些冷门但是非常值得推荐的软件?
  16. 【FinE】EMD/EEMD方法及金融数据分解
  17. cs5460a c语言程序,cs5460a应用电路(含源程序)
  18. 记录一下blender烘焙光照漫反射贴图
  19. 网页怎么算切屏_十种切屏抓取方法(图形)
  20. 企业微信组织架构同步优化的思路

热门文章

  1. C++中数组下标越界
  2. MVC自定义路由地址
  3. bugreport 源码篇
  4. 国产NTFS 磁盘读写工具 - Omi NTFS磁盘专家 for Mac
  5. 免费的PPT转Flash工具:iSpring Free绿色版
  6. IBM宣布造出全球首颗2nm EUV芯片
  7. PySimpleGui theme主题使用
  8. Dev-cqq 脚动扩栈方法
  9. HTML flex遇到white-space:nowrap
  10. MATLAB作图|fig图中增加细节图