(1365): [CEOI96]渡轮问题

ACM 79. 渡轮问题(最长不下降子序列dp) 79. 渡轮问题 ★☆   输入文件:maxxl.in   输出文件:maxxl.out   简单对比 时间限制:1 s   内存限制:128 MB Palmia 河在某国从东向西流过,并把该国分为南北两个部分。河的两岸各有 n 个城市,且北岸的每一个城市都与南岸的某个城市是友好城市,而且对应的关系是一一对应的。现在要求在两个友好城市之间建立一条航线,但由于天气的关系,所有航线都不能相交 阅读详情

时间限制: 1 Sec  内存限制: 64 MB

题目描述

Palmia 河在某国从东向西流过,并把该国分为南北两个部分。河的两岸各有 N 座城市,且北岸的每一个城市都与南岸的某个城市是友好城市,而且友好关系是一一对应的。现在要求在两个友好城市之间建立一条航线,但由于天气的原因,所有航线都不能相交,因此,就不可能给所有的友好城市建立航线。 问题:当给出城市个数和友好关系的信息之后,选择一种修建航线的方案,能建最多的航线而不相交。

输入

第1行:2个空格分开的整数X, Y,X (10≤X≤6000)表示Palmia河岸的长度,Y(10≤Y≤ 100)表示河的宽度 第2行:1个整数N (1≤N≤5000),表示在河两岸分别有多少座城市 接下来N行:每行2个空格分开的非负整数C、D(C,D ≤X),表示河两岸的一对友好城市从河最西端算起的坐标(C表示北岸的城市,D表示南岸的城市),在同一岸上没有两座城市的坐标相同。

输出

第1行: 最多能建立航线的数量K 接下来K行:每行2个用1个空格分开的整数,按北岸城市的坐标从小到大的顺序输出建立航线的K对友好城市的坐标。若有多种方案,选择北岸城市(从后往前数起)编号大的那种方案

样例输入

Copy (如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)

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

样例输出

4
4 2
10 3
15 12
17 17

第一眼看这题的时候,我tm是一脸懵逼的...

打了个草稿,于是就= =

就是这样的,在此懒得累述,显然要想不相交就要x1<x2&&y1<y2~直接按北岸坐标排序然后最长上升子序列~

详见代码。

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int x,y,n,f[5005];
struct node
{
	int n,s,p;
}a[5005];
bool cmp(node p,node q)
{
	return p.n<q.n;
}
void Pt(int g)
{
	if(!a[g].p)
	{
		printf("%d %d\n",a[g].n,a[g].s);
		return;
	}
	Pt(a[g].p);
	if(g<=n) printf("%d %d\n",a[g].n,a[g].s);
}
int main()
{
    int i,j;
    scanf("%d%d%d",&x,&y,&n);
    for(i=1;i<=n;i++)
		scanf("%d%d",&a[i].n,&a[i].s);
	sort(a+1,a+n+1,cmp);
	a[n+1].s=7000;
    for(i=1;i<=n+1;i++)
        for(j=1;j<i;j++)
            if(a[i].s>a[j].s&&f[j]+1>=f[i])
			{
				f[i]=f[j]+1;
				a[i].p=j;
			}
	printf("%d\n",f[n+1]);
	Pt(n+1);
}

 

至于代码中的p就是记录前驱,那个铂Pt函数就是递归输出的..

好了我讲完了qwq

 

 

 

/*

 

明明周一要月考还冒着跌出年级前一百的风险来刷水真是丧心病狂。

物理化学合堂模拟还考砸了..

余心无可眷矣。

*/

渡轮问题(动态规划) Description   Palmia河在某国从东向西流,并把该国分成南北两个部份。河的两岸共有n个城市,且北岸的某个城市与南岸的某个城市是友好城市,而且对应的关系是一一对应。如下图:      现要求在两个友好城市之间建立一条航线,但由于天气关系,所有的航线都不能相交,因此就可能所有城市都建立航线。如上图,则最多可建立两条航线可保证航线不交叉。 Input   第一行为一个数n(n 阅读详情

相关推荐

C++贪心算法之乘船问题

乘船问题 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。我们要尽量减少这次活动中的花销,所以要找出可以安置所有旅客的最少的独木舟条数。现在请写一个程序,读入独木舟的最大承载量、旅客数目和每位旅客的重量。根据给出的规则,计算要安置所有旅客必须的最少的独木舟条数,并输出结果。 输入

The most secret blogs 4850

渡轮问题 题解

题目描述 Palmia 河在某国从东向西流过,并把该国分为南北两个部分。河的两岸各有 N 座城市,且北岸的每一个城市都与南岸的某个城市是友好城市,而且友好关系是一一对应的。 现在要求在两个友好城市之间建立一条航线,但由于天气的原因,所有航线都不能相交,因此,就不可能给所有的友好城市建立航线。 问题:当给出城市个数和友好关系的信息之后,选择一种修建航线的方案,能建最多的航线而不相交。 输入格式 第1行:2个空格分开的整数XXX, YYY,表示Palmia河岸的长度,表示河的宽度 第2行:1个整数N (

CoderZeng的博客 1435

CodeForces1046B Hyperspace Highways

传送门 题意: N个点,M条边,每一个环上的点两两有边相连。q次询问两点间最短距离。 题解: 构造圆方树,那么两点间距离感性认知一下就可以发现是树上两点间距离的一半。然后 dist(u,v)=(dep[u]+dep[v]-2*dep[lca])/2即可。 继续存板子。 代码: #include<cstdio> #include<algorithm> #define maxn...

dogeding233 5483

【例题&结论】【动规】2017&2508渡轮问题

NKOJ2508 渡轮问题(弱数据版) 时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 NK河的两岸各有N个城市,且北岸的每一个城市与南岸的某个城市是友好城市,而且对应的关系是一一对应的。现在要求在两个个友好城市之间建立一条航线,但所有航线都不能相交,因此,就不可能给所有的友好城市建立航线。问题:当城市间的友好关系建立以后,选择一种修建航线的方案,使得能建最多

ANG 1119

oj-【基础图论】最优布线问题

题目描述 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们中间有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。 当然,如果将任意两台计算机都用数据线连接,费用将是相当庞大的。 为了节省费用,我们采用数据的间接传输手段,即一台计算机可以间接的通过若干台计算机(作为中转)来实现与另一台计算机的连接。 现在由你负责连接这些计...

dogeding233 1425

渡轮问题Ship 编程】解决方案:船只装载问题的Python实现

以下是一个用Python编写的程序,用于解决船只装载问题,也被称为渡轮问题。该问题涉及将不同大小的车辆从一个岸边运送到另一个岸边,限制条件是船只的最大负载能力和每辆车的重量。我们使用贪心策略,从列表中依次选择车辆进行装载,直到达到或接近最大负载能力。我们选择船舱中车辆较少的一侧进行装载,以保持船舱的平衡。当然,根据具体情况,你可以根据自己的需求进行修改和扩展,比如考虑其他限制条件,如车辆的尺寸、船舱的容量等。在上面的代码中,我们首先将车辆列表按照重量的降序进行排序,这样可以确保我们首先尝试装载较重的车辆。

CyberByte的博客 219

轮船渡口管理 C++版

/* 问题:有一个渡口,每条渡轮一次能装载10辆汽车过江,过江车辆分为客车 和货车两类,上渡轮有如下规定: (1)同类汽车先到先上船 (2)客车先于货车上船 (3)每上4辆客车才允许上一辆货车,但若等待的客车不足4辆则用货车填补, 反过来,若没有货车等待则用客车填补 (4)装满10辆后自动开船,当等待时间较长时车辆不足10辆也应人为控制发船 */ #include #inclu

sanjinjin的博客 3945

渡轮问题代码

没有桥的时候,一般都用渡轮把汽车运过河。汽车从渡轮的一头驶入,渡轮开过河,汽车再从渡轮的另一头开出。现有一个可以装载 n 辆汽车的渡轮,它过河需要用 t 分钟,回来也要 t 分钟。 m 辆汽车按给定的时间表到达渡轮码头。现问,最早能在何时把所有的汽车都运送过河?在此时间限制内,渡轮至少开行多少个来回? 关于输入 第一行是整数 c,表示有多少组测试数据。每组测试数据的第一行为三个整数 n 、 t 、 m 。其后是 m 行整数,每个整数表示一辆汽车到达渡轮码头的时间(以从一天开始经过的分钟数计算)。渡轮可以任意开行,只是它只能装载已经达到码头的汽车。 关于输出 对于每组测试数据输出一行,其中包含两个用空格分隔的整数,第一个整数表示把最后一辆汽车运送到河对岸的时间(以从一天开始的分钟数计算),第二个整数在此时间限制内,渡轮的最少开行多少个来回。 可以假定 0 < n, t, m < 1440。每组测试数据内的汽车到达时间单调递增。 例子输入 2 2 10 10 0 10 20 30 40 50 60 70 80 90 2 10 3 10 30 40 例子输出 100 5 50 2

乘船问题

考虑最轻的人和最重的人是否可以在一条船上,如果最轻的和其他人的人都不能在一条船上,则每个人都需要一条船 #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<iostream> #...

zhangzhenjunaixuxin的博客 1235

DP-渡轮问题-测试数据

《轮渡问题》是一道经典的DP动态题,但网上找不到正确的测试数据,现奉献测试数据和AC代码如上。 题目描述 某国家被一条河划分为南北两部分,在南岸和北岸总共有N对城市,每一城市在对岸都有唯一的友好城市,任何两个城市都没有相同的友好城市。每一对友好城市都希望有一条航线来往,于是他们向政府提出了申请。由于河终年有雾。政府决定允许开通的航线就互不交叉(如果两条航线交叉,将有很大机会撞船)。兴建哪些航线以使在安全条件下有最多航线可以被开通。 输入 第一行两个由空格分隔的整数x,y,10〈=x〈=6000,10〈=y〈=100。x表示河的长度而y表示宽。 第二行是一个整数N(1<=N<=5000),表示分布在河两岸的城市对数。接下来的N行每行有两个由空格分隔的正数C,D(C、D〈=x〉,描述每一对友好城市与河起点的距离,C表示北岸城市的距离而D表示南岸城市的距离。在河的同一边,任何两个城市的位置都是不同的。 输出 在安全条件下能够开通的最大航线数目。 样例输入 30 4 5 4 5 2 4 5 2 1 3 3 1 样例输出 3

Qt 5.15.2静态编译避坑实录:MinGW 32位版从源码到Creator配置的全流程踩坑总结

本文详细介绍了Qt 5.15.2 MinGW 32位版本的静态编译全流程,包括环境准备、配置参数优化、编译过程监控及安装后配置。重点解决了静态编译中的常见问题,如参数顺序敏感、路径引号问题等,并提供了性能对比实测数据,帮助开发者高效完成静态编译。

weixin_26749245的博客 271

小船过河问题

定义dp[i]为前i+1个人(即索引 0 到 i)过河所需的最小时间。这里,我们假设过河时间已排序,即,其中a[i]是第 i 个人的过河时间(索引从 0 开始)。

qwerth_754的博客 805

Python语言在工业控制中的简单应用

在工业控制中,经常需要对采集到的数据进行分析和处理,Python的这些库可以简化这一过程。传统的工业控制系统多依赖于专用的控制硬件和软件,但随着技术的发展,开放性和灵活性成为了新的需求焦点。还有,Python社区活跃,提供了大量的开源代码和模块,这对于工业控制领域来说是一个巨大的资产。Python作为一种高级编程语言,因其简洁的语法、强大的库支持和广泛的社区资源而在工业界获得了快速的发展和广泛的应用。在工业控制领域,Python的应用日益增多,这得益于其跨平台性、脚本语言的灵活性以及与硬件设备交互的能力。

2303_78014702的博客 1721

C++无比经典的乘船问题的模版代码

乘船问题模版代码

WTC20120518的博客 385

如何利用PREEvision和MATLAB开发AUTOSAR软件组件

在业界,比较著名的电子电气架构开发工具要属德国Vector公司开发的PREEvision工具了,而MATLAB/Simulink软件是非常高效且实用的基于模型的应用软件开发工具。利用PREEvision与Simulink联合开发AUTOSAR应用软件组件的开发流程有三种,分别是:“自上而下”开发流程(从PREEvision开始),“自下而上”开发流程(从Simulink开始),以及“双向”开发流程。如下图所示,无论哪一种开发流程,PREEvision与Simulink工具都是通过arxml文件进行信息交互的

怿星科技的博客 5396

保姆级教程:在iQuant平台从零写一个Python量化策略(附完整代码示例)

本文提供了一份详细的iQuant平台Python量化策略开发教程,从环境准备到策略实现、回测优化,再到实盘运行,每个步骤都配有完整代码示例和常见问题解决方案。适合量化交易新手快速上手,掌握双均线策略等核心开发技巧。

weixin_42783709的博客 479

独木舟上的旅行(算法)

C语言算法

2302_78877566的博客 540

DETRs with Collaborative Hybrid Assignments Training论文阅读与代码

在这篇论文中,作者观察到在DETR中将过少的 Query 分配为正样本,采用一对一的集合匹配,会导致对编码器输出的监督稀疏,严重损害编码器的区分特征学习,反之亦然,也会影响解码器中的注意力学习。为了缓解这个问题,作者提出了一种新颖的协同混合分配训练方案,名为Co-DETR,以从多样的标签分配方式中学习更高效、更有效的基于DETR的检测器。这种新的训练方案可以通过训练多个并行辅助 Head ,以一对多的标签分配方式(如ATSS和Faster RCNN)进行监督,轻松增强端到端检测器中编码器的学习能力。

qingjing0413的博客 1156

79. Word Search

Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertica...

weixin_30835933的博客 161

ROS 2 + Astra Pro深度相机实战:5分钟搞定远程可视化与距离检测(附避坑指南)

本文提供了一份详尽的ROS 2与Astra Pro深度相机集成实战指南。通过5分钟快速部署,实现远程可视化与实时目标距离检测。文章涵盖驱动安装、SSH+X11远程调试、核心测距节点编写,并附有详细的避坑指南,帮助开发者高效构建机器人视觉感知系统。

weixin_29232507的博客 278

Unity中语法糖带来的GC问题 ——那些看起来优雅、实际上在背后偷偷生垃圾的代码

*语法糖(Syntactic Sugar)**指的是编程语言中为了让代码更简洁、易读而提供的简便写法。比如C#中的foreachlambda表达式LINQ自动属性等。语法糖本身不是坏事,但在Unity等对GC敏感的环境下,要警惕语法糖带来的隐式内存分配。合理使用语法糖,关键场合用更“丑陋”但高效的写法,才能保证游戏流畅运行。下面我将更深入地分析Unity中语法糖导致GC的原理、具体场景、检测与优化技巧,并补充一些容易忽视的细节。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 517

[cogs1473]很强的乘法问题

QAQ再练一波。。 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cstring> 5 #include <cstdlib> 6 #include <string> 7 #i...

aoping9329的博客 140

OceanBase迁移平台OMS企业版部署

OceanBase迁移平台OMS企业版部署摘要: 本文档详细介绍了OceanBase迁移平台OMS企业版的部署流程,包含环境准备、OAT部署管理、MetaDB部署等关键步骤。

Sebastien23的博客 521

【动态规划】友好城市

题目描述 一条河从东向西流过,并把魔法世界分为南北两个部分。河的两岸各有n个城市,且北岸的每一个城市都与南岸的某个城市是友好城市,而且对应的关系是一一对应的,如图所示。 现在要求在两个友好城市之间建立一条航线,但为了安全起见,所有航线都不能相交,因此,不是所有的友好城市都能建立航线。请问,最多能建多少航线? 输入 第一行两个由空格分隔的整数x,y,10≤x≤6000,10≤y≤100。x表示河的长...

qq_43690454的博客 962

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++过河(动态规划dp)

C++过河(动态规划dp) 在一个夜黑风高的晚上,有 n 个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不超过两人通过,他们只有一个手电筒,所以每次过桥后,需要有人把手电筒带回来,第 i 号小朋友过桥的时间为 a[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。 输入格式 第一行输入一个整数 n,表示有 n 个小朋友。 第二行有 n 个整数 ai ,...

Keven_11的博客 3534

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: (1544): 序列划分(求极大值的最小值)&(1233): 【基础算法】 书的复制
下一篇: (1151): 循环比赛
dogeding
博客等级 码龄10年 31粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值