DP20 求pair的最大长度链 Maximum Length Chain of Pairs @geeksforgeeks

人工智能入门系列之一: 鸢尾花(Iris)多分类的神经网络详解及代码实现 这是最好的时代,我们一起来打造属于自动驾驶汽车上路、无人机飞天、智能机器人管工厂的AI未来 人工智能领域分化为两个阵营:其一是规则式(rule-based)方法,在人工智能早期占主峰;其二是神经网络(neural network)方法,后起之秀。随着硬件水平的提高,算力的指数式增长;人工智能的重心已经从规则式的专家时代转移到神经网络的数据时代。 “神经网络”不选择把人脑熟稔的逻辑规则传授给计算机... 阅读详情

是LIS的变型题,如果遇到两维则先排序一维再对另一维动态规划

You are given n pairs of numbers. In every pair, the first number is always smaller than the second number. A pair (c, d) can follow another pair (a, b) if b < c. Chain of pairs can be formed in this fashion. Find the longest chain which can be formed from a given set of pairs.
Source: Amazon Interview | Set 2

For example, if the given pairs are {{5, 24}, {39, 60}, {15, 28}, {27, 40}, {50, 90} }, then the longest chain that can be formed is of length 3, and the chain is {{5, 24}, {27, 40}, {50, 90}}

This problem is a variation of standard Longest Increasing Subsequence problem. Following is a simple two step process.
1) Sort given pairs in increasing order of first (or smaller) element.
2) Now run a modified LIS process where we compare the second element of already finalized LIS with the first element of new LIS being constructed.

The following code is a slight modification of method 2 of this post.



package DP;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

public class MaximumLengthChainOfPairs {

	public static void main(String[] args) {
		Pair p1 = new Pair(5, 24);
		Pair p2 = new Pair(39, 60);
		Pair p3 = new Pair(15, 28);
		Pair p4 = new Pair(27, 40);
		Pair p5 = new Pair(50, 90);
		Pair[] A = {p1,p2,p3,p4,p5};
		int n = A.length;
		System.out.println(maxChainLength(A, n));	// {{5, 24}, {27, 40}, {50, 90}}
	}
	
	public static int maxChainLength(Pair[] A, int n){
		Arrays.sort(A, new Comparator<Pair>() {
			@Override
			public int compare(Pair o1, Pair o2) {
				return o1.a - o2.a;
			}
		});
		
//		System.out.println(Arrays.toString(A));
		
		int[] mcl = new int[n];
		int max = 0;
		
		/* Initialize MCL (max chain length) values for all indexes */
		for(int i=0; i<n; i++){
			mcl[i] = 1;
		}
		
		/* Compute optimized chain length values in bottom up manner */
		for(int i=1; i<n; i++){
			for(int j=0; j<i; j++){
				if(A[j].b < A[i].a){		// 保证上升
					mcl[i] = Math.max(mcl[i], mcl[j]+1);
				}
			}
		}
		// mcl[i] now stores the maximum chain length ending with pair i
		 /* Pick maximum of all MCL values */
		for(int i=0; i<n; i++){
			max = Math.max(max, mcl[i]);
		}
		
		return max;
	}

	
	public static class Pair{
		int a;
		int b;
		public Pair(int a_, int b_){
			a = a_;
			b = b_;
		}
		@Override
		public String toString() {
			return "Pair [a=" + a + ", b=" + b + "]";
		}
		
	}
}


http://www.geeksforgeeks.org/dynamic-programming-set-20-maximum-length-chain-of-pairs/

40、基于指令的GPU编程:OpenACC与OpenMP的深入解析 本文深入解析了两种基于指令的GPU编程模型——OpenACC和OpenMP。从编程复杂度、数据处理方式和性能表现等多个方面对两者进行了对比分析,并结合实际应用场景提供了选择建议。通过详细的代码示例和性能测试结果,帮助开发者更好地理解和应用这两种编程模型,以充分发挥GPU的并行计算能力。 阅读详情

相关推荐

UDS诊断ISO14229新手入门篇

这个命令的格式稍微复杂一点。sub-function = 0x06 用于读取某个 DTC 及其相关的环境数据,此时 parameter 为 4 个 byte,前三个 byte 用于标识我们要读取的 DTC,第四个 byte 用于标识要读取的环境数据的范围,UDS 规定使用 FF 来表示读取所有的环境数据,各厂家可以要根据自己的需求定义其他的值来代表要读取的环境数据的范围。环境数据包括 DTC 状态,优先级,发生次数,老化计数器,时间戳,里程等,厂家还可以根据自己的需求定义一些此 DTC 产生时的测量数据。

weixin_45387165的博客 1974

2712. Pairs of Numbers

Let's assume that we have a pair of numbers (a,b). We can get a new pair (a+b,b) or (a,a+b) from the given pair in a single step. Let the initial pair of numbers be (1,1). Your task is to find number...

乌药ice 4776

Fastjson2 2.0.26反序列化漏洞深度剖析:从原理到PoC构造

本文深度剖析了Fastjson2在2.0.26及之前版本中存在的反序列化漏洞。该漏洞允许攻击者通过构造包含恶意TemplatesImpl对象的JSONArray,并利用BadAttributeValueExpException触发,在反序列化过程中实现远程代码执行。文章从漏洞原理、PoC构造、利用链分析到防御建议,提供了全面的技术解读,帮助开发者和安全人员理解其危害并采取应对措施。

d3e4f的博客 1050

Codeforces 134B. Pairs of Numbers (辗转相除)

Description Let’s assume that we have a pair of numbers ( a, b). We can get a new pair ( a + b, b) or ( a, a + b) from the given pair in a single step. Let the initial pair of numbers be (1,1). Your task is to find number k, that is, the least number of st

chr1stopher 1873

从仿真到现实:BeamDojo双足机器人项目实战指南(附完整配置清单)

本文提供了一份基于BeamDojo项目的双足机器人从仿真训练到现实部署的完整实战指南。详细拆解了硬件选型(如宇树G1、Jetson Orin NX、Livox Mid-360)、Isaac Gym仿真环境搭建、强化学习训练技巧(如双评论家架构、课程学习)以及关键的Sim2Real迁移策略,旨在帮助开发者将前沿研究成果转化为可落地的工程实践。

hhh00的博客 876

SolidWorks的GB库(钢型材库,包括铝型材、铝管等结构)安装及使用教程(生成铝型材为例)

1、GB库的下载 2、GB库的安装教程 3、GB库的使用教程

树下等苹果的博客 12万+

Pairs of Numbers

#include<stdio.h> //we have defined the necessary header files here for this problem. //If additional header files are needed in your program, please import here. /* * 函数int dea...

weixin_30343157的博客 956

PyTorch 面试题及详细答案120题(54-70)-- 模型训练与评估

本文介绍了PyTorch模型训练的基本流程和核心概念。主要内容包括: 模型训练基本流程:通过代码示例展示了数据准备、模型定义、损失函数和优化器选择、训练循环(前向传播、反向传播、参数更新)的完整过程,并包含验证集评估的实现。 训练过程中的关键概念: Epoch:完整遍历一次训练集 Batch:将数据分成小批次 Iteration:一个Batch的参数更新过程 三者关系:1 Epoch = N/B Batch = N/B Iteration(N为样本数,B为batch_size) PyTorch数据加载机制:

大剑师兰特的GIS世界 489

lua 求长度 和ipair 和pairs

--例如有序的local xiang = {10,22,34,42,51}print("xiang length ==",table.getn(xiang)) --结果为:[LUA-print] xiang length == 5--例如无序的local song = {s=10,h=22,x=34,m=42,n=51}print("song length ==",table.getn(song)...

palawind 844

UE5 推荐的资产命名规范

在开发阶段中,随着 虚幻引擎(UE)(Unreal Engine (UE)) 项目日益复杂,内容浏览器(Content Browser) 中的 资产(Assets) 列表会不断扩充。这会导致资产出现各种变体版本,也会导致资产名称因过于相似而造成混淆。比如,你有一个文件夹名为"Soldier",这个文件夹中有蓝图、纹理和模型,它们的名称中都带"Soldier"一词,但在简单列表中,很难区别它们。

一碗清深的博客 3374

微信小程序:使用mqtt手机屏幕锁屏后导致中断问题,让mqtt在手机黑屏后依然能保持连接及持续后台运行接收或处理任务,详解微信小程序MQTT在应用退到后台或手机熄屏的情况下自动检测并重连【强制保活】

微信小程序切后台后MQTT连接无法维持,微信小程序MQTT一旦用户锁屏、切换到后台或手机熄屏,连接就会断开,导致无法继续监听和处理业务消息,微信小程序mqtt保活方案,微信小程序屏幕锁屏或息屏导致mqtt连接中断怎么办,如何解决MQTT不能黑屏持续连接的问题,微信小程序应用退到后台 MQTT连接断开问题解决,苹果ios手机,安卓手机,uniapp微信小程序mqtt断开怎么解决,后台应用怎么保活,uni-app中MQTT连接频繁断开如何解决?应用退到后台后MQTT连接断开以及常连接断连的问题,微信小程序、MQ

✅ 精选推荐文章 3026

java编程——吸血鬼数字(四位)

从《Thinking in Java》(中文第四版)中第4章的练习10看到“吸血鬼数字”,特编程实现,以下为3种算法(针对四位数的)及其对比: 首先解释一下吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可由一对数字相乘而得到,这对数字各包含乘积的一半位数的数字,以两个0结尾的数字是不允许的。  四位数吸血鬼数字示例:1260=21*60,1827=21*87,2187=27*81…… 先列出结果:一共

我要上天 1280

【芯片设计- RTL 编译与仿真 1.2 -- Visualizer 常用使用命令】

打开波形后,如果想要看到所有信号的数据,可以点击下图中红框中的按钮,因为默认verdi 默认并不是显示所用信号。如果想统计某一个信号中有多少笔数据时,可以使用 Expression->Edege Count 功能。如下图所示,如果没有打开前导0的功能时,当某一笔数据位0时,只会显示1个0。如果需要将波形的数据导出到文本文件时,可以按照下面步骤进行。打开前导0功能之后,会根据数据位宽来显示对应0的个数。

CodingCos的博客 2047

Pair of Numbers

Pair of Numbers Simon has an arraya1, a2, ..., an, consisting ofnpositive integers. Today Simon asked you to find a pair of integersl, r(1 ≤ l ≤ r ≤ n), such that the following conditions hold: ...

看流云落成雨滴 1550

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Codeforces 134 B Pairs of Numbers【枚举】

传送门:http://codeforces.com/contest/134/problem/B 题意 对于一个数对(a,b)(a,b)(a,b),我们可以通过一次操作将其变为新数对(a+b,b)(a+b,b)(a+b, b)或(a,a+b)(a,a+b)(a,a+b)。给定一正整数 nnn,问最少需要多少次操作可将数字对(1,1)(1,1)(1, 1)变为一个数字对,该数字对至少有一个数...

Yucohny 1427

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Pair of Numbers CodeForces - 359D 暴力

又是暴力,自己又不会,而且别人的更加巧妙了 Codeforces Round #209 (Div. 2) D:http://codeforces.com/contest/359/problem/D 题意:给以一个n个数的序列,然后问你最大的区间l,r,在这个区间里面,存在一个数是这个区间所有数的约数,如果这个区间有多个,统计有多少个以及每个区间的左端点。 int

now_ing的博客 669

Codeforces Round #277.5 (Div. 2) JAVA版题解

Codeforces Round #277.5 (Div. 2) A. SwapSort time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output

码代码的猿猿 2301

POJ 1117:Pairs of Integers

题目链接:http://poj.org/problem?id=1117 题目翻译:给出一个数N,求X+Y = N的所有数对(X,Y),X,Y有如下要求,Y是X 这个数删除一位所得到的数,X不能含有前导0,但是Y可以含有前导0. 解题思路: 思路来源:http://poj.org/showmessage?message_id=350873 可以把X看成三部分。 A

温姑娘的博客 1070

CodeForces 403 D.Beautiful Pairs of Numbers(组合数学+dp)

Description 称一个序列(a1,b1),(a2,b2),...,(ak,bk)(a_1,b_1),(a_2,b_2),...,(a_k,b_k)是美丽的当且仅当其满足以下两个条件 1.1≤a1≤b1a2≤b2...ak≤bk≤n1\le a_1\le b_1 2.b1−a1,b2−a2,...,bk−akb_1-a_1,b_2-a_2,...,b_k-a_k均不同 问满足条件的

ZSQ 660

C++ pair的比较大小

std::pair 是可以比较大小的 有这样的全局函数 template<class _Ty1, class _Ty2> inline bool operator& _Left, const pair& _Right) { // test if _Left < _Right for pairs return (_Left.first < _Right.first || !(

emmmmmm 1万+

Java实现 LeetCode 646 最长数对链(暴力)

646. 最长数对链 给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。 给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。 示例 : 输入: [[1,2], [2,3], ...

南 墙 1万+

D. Pair of Numbers----思维题

D. Pair of Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Simon has an array a1, a2, ..., an, co

bless295的博客 2238

【LeetCode】201. Bitwise AND of Numbers Range 数字范围按位与(Medium)(JAVA)

【LeetCode】201. Bitwise AND of Numbers Range 数字范围按位与(Medium)(JAVA) 题目地址: https://leetcode.com/problems/bitwise-and-of-numbers-range/ 题目描述: Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, in

qq_16927853的博客 148

java课程课后作业190606之计算最长英语单词链

一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。最长的定义是:最多单词数量,和单词中字母的数量无关。 统一输入文件名称:input1.txt, input2.txt 统一输出文件名称:output1.txt,output2.txt 程序需要考虑下列异常状况: 例如,文件不存在,你的程序会崩溃么,还是能优雅地退出并给用...

weixin_30625691的博客 150

判断是否字符串重组 Scramble String @LeetCode

思路: 1 递归: 简单的说,就是s1和s2是scramble的话,那么必然存在一个在s1上的长度l1,将s1分成s11和s12两段,同样有s21和s22。 那么要么s11和s21是scramble的并且s12和s22是scramble的; 要么s11和s22是scramble的并且s12和s21是scramble的。 如果要能通过OJ,还必须把字符串排序后进行剪枝 http://

1万+

深入理解递归

大家都知道,递归的本质和栈数据的存取很相似了,都是先进去,但是往往最后处理!再者对于递归函数的局部变量的存储是按照栈的方式去存的,对于每一层的递归函数在栈中都保存了本层函数的局部变量,一边该层递归函数结束时能够保存原来该层的数据!如图:               如上图递归式依次往下进行的,并且在该层递归函数还没结束即将进入下一层递归调用时,将会把该层函数中的局部变量保存起来,以供下次使用!

7758

Edit Distance 编辑距离算法 @LeetCode

又是一道典型DP! 我们将人生划为诡异的阶段 我们把这个世界表为丰富的状态 package DP; import java.util.Arrays; /** * Edit Distance * * Given two words word1 and word2, find the minimum number of steps required to conve

5661
上一篇: DP19 自动换行问题 Word Wrap Problem @geeksforgeeks
下一篇: 修改 Ubuntu 用户的 Shell
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值