//
// Created by Arc on 2020/4/27.
//对了,这篇题解的代码是小白自己写的.有啥错误还请各位大佬多多包涵. /*
* 某国有一条大河(一条大河~~~~,波浪宽~~~~),河有笔直的南北两岸,岸上各有位置不相同的n个城市
* 北岸的每个城市有且只有一个友好城市在南区
* 不同城市的友好城市不同(南北对应呗)
* 每对友好城市向政府申请开辟航道,但是为了交通安全,两条航道不能交叉
* 求政府最多可以建多少满足条件的航道
* 输入:
* 第一行为城市数:N
* 接下来一直到N+1行,分别表示南岸与北岸的坐标
* 输出:
* 批准数字以及路径(就是第几个城市)
*
*/
//话说小白看见这个题第一反应肯定是:不会啊...(菜习惯了),但是研究一下就会发现:
/*
* 要满足不交叉.. 其实也好办:只要把一边从大到小排序,另一边只要是升序就不会相交
* 1 3
* 2 4
* 3 1
* 4 5
* 5 2
*
* 但是如果是找最长的呢?
* 那就是右边的最长不下降序列啊!
*
* 所以:
* 排序加最长不下降.现在应该就会了吧!
*
*
*
*/
//存数我想用结构体,首先用sort进行排序,再进行最长不下降
#include <bits/stdc++.h>
using namespace std;
int N;
struct Friend{
int x;
int y;
}friends[];
struct Rule{//sort自定义比较规则
bool operator()(const Friend &f1,const Friend &f2)
{
return f1.x < f2.x;
}
};
int f[];
int c[]={};
int main(){
cin>>N;
for (int i = ; i <= N; ++i) {//注意下标从1开始,是1到N
cin>>friends[i].x>>friends[i].y;
} sort(friends+,friends++N,Rule());//sort排序 for (int i = ; i <= N; ++i) {
cout<<friends[i].x<<" "<<friends[i].y<<endl;
} f[N]=;//注意,一般是有对最后一个值赋值的语句
int k;
for (int j = N-; j >= ; j--) {
int l=;//记录每一次固定点的最大值
k=;
for (int i = j+; i <= N ; ++i) {
if(f[i]>l && (friends[j].y < friends[i].y )){//两个条件:大于,且是后面的数的最大值
l=f[i];
k=i;
} }
f[j]=l+;
c[j]=k;//记录位置 }
int p=;
for (int m = ; m <= N ; ++m) {//寻找最大不下降
if(f[p]<f[m])
p=m;
}
cout<<f[p]<<endl;
//以下的几行几乎就是输出路径的套路,非常建议背过
cout<<p;
p=c[p];
while(p!=){
cout<<"-";
cout<<p;
p=c[p];
} }

做个小笔记:

一开始给数组命名成了friend直接报错,为啥呢?后来忽然想起friend是c++的一个关键字(友元),所以我很淡定地改成了friends.其实命名的时候,加个复数可能会回避一些自己不知道的关键字.

再就是注意对最后一个f[n]的赋值吧!

最后几行是输出路径的套路了....嗯嗯.

友好城市dp的更多相关文章

  1. 洛谷P2782 友好城市 DP

    やはり まだあしたということは嘘でしょう.ぜんぶ忘れた( ´・ヮ・`) 所以今天就贴一道水题吧 原题>>https://www.luogu.org/problem/show?pid=278 ...

  2. 【经典DP】洛谷 P2782 友好城市

    嘤嘤嘤,昨天两个文化课老师在上奥赛时招呼我(亲切交流),今天又要写工作报告,没时间写题解,希望今天能补上 友好城市 题目://洛谷那粘来的题面竟然能把格式粘过来 题目描述 有一条横贯东西的大河,河有笔 ...

  3. 【dp】友好城市

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

  4. P2782 友好城市

    P2782 友好城市一道伪装得很好的dp,一开始没想出来,不相交就是所有的都在右边,也就是对于当前的城市i和它的友好城市的坐标都在城市j和它的友好城市的右边,这样就转化成了求最长上升子序列,f[i]表 ...

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

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

  6. 洛谷 P2782 友好城市

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

  7. (Java实现) 友好城市

    1263:[例9.7]友好城市 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1867 通过数: 1032 [题目描述] Palmia国有一条横贯东西的大河,河有笔直的南北两岸, ...

  8. P2782 友好城市(最长不下降子序列)

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

  9. 【Noip模拟 20161005】友好城市

    问题描述 小ww生活在美丽的ZZ国.ZZ国是一个有nn个城市的大国,城市之间有mm条单向公路(连 接城市ii.jj的公路只能从ii连到jj).城市ii.jj是友好城市当且仅当从城市ii能到达城市jj并 ...

随机推荐

  1. 51单片机入门(补充)1--与C语言的交接

    我写完上一个文章,发现我写的还是不够全面,所以,这篇文章将会延续上一个文章的内容,并且再次补充新的东西,如果还有什么地方需要补充,还请各位一一指出,如果你已经学过这些东西,大可以直接跳过,假如说之后有 ...

  2. Spring 获取单例流程(一)

    读完这篇文章你将会收获到 在 getBean 方法中, Spring 处理别名以及 factoryBean 的 name Spring 如何从多级缓存中根据 beanName 获取 bean Spri ...

  3. 一.5.序列化应用之服务器制造厂与型号app功能

    1.环境准备: (python36env) [vagrant@CentOS7 apps]$ django-admin startapp manufacturer (1)激活:'manufacturer ...

  4. 三分钟在任何电脑上使用 chrome os

    准备 什么是 chrome os? Chrome OS是一款Google开发的基于PC的操作系统. Google Chrome OS是一款基于Linux的开源操作系统. Chrome OS 系统和 C ...

  5. 读CSAPP第一章的收获

    这个系列只写了CSAPP第三版对于我的收获. 里面的内容很多,我只写我以前不知道的,然后现在又觉得挺有用的内容. 没有很好的排版,将就看. Amadhl定律:主要观点,想要显著加速整个系统,必须提升全 ...

  6. JAVASE经典面试问题(必须熟背),你Get到了吗?

    JAVASE经典面试问题(必须熟背) 1. 编译java程序使用什么命令?运行java使用什么命令? javac *.java java 类名 2. 什么是JDK,什么是JRE,JDK与JRE有什么区 ...

  7. Dynamics CRM Data Encrytion error

    Dynamics CRM有两个Database,一个Content DB——xxxx_MSCRM,一个Config DB——MSCRM_CONFIG. 当Content DB从其他环境Restore回 ...

  8. day05 垃圾回收机制(超小白讲解)

    垃圾回收机制 在学习这个抽象概念前,老习惯,灵魂二问 什么是?为什么要有? 引言:在程序运行到变量定义时,会在内存空间中存放变量值,然而内存空间是有限的,变量是无限的. Q:如何在有限的内存里存里存放 ...

  9. Java 添加条码、二维码到Word文档

    本文介绍如何在Word文档中添加条码.二维码.可在文档正文段落中添加,也可在页眉页脚中添加.下面将通过Java代码示例介绍如何实现. 使用工具:Free Spire.Office for Java(免 ...

  10. JVM 专题七:运行时数据区(二)程序计数器

    1.程序计数器 1. 什么是PC寄存器(程序计数器)? JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现 ...