hdu1160 FatMouse's Speed 最长上升子序列 LIS

NXP应用随记(八):S32K3XX的HSE学习记录(HSE\MU\UTEST\IVT\A,B SWAP) HSE,即硬件安全引擎(Hardware Security Engine),是NXP S32K312微控制器(MCU)中的一个功能,它提供了一系列的安全特性,包括加密、安全启动和密钥存储等。这些功能旨在增强汽车电子系统的信息安全,符合ISO26262标准,达到ASIL D安全等级。具体来说,S32K312的HSE支持AES-128/192/256加密、RSA、ECC等加密算法,以及侧通道保护,确保了数据传输和存储的安全性。 阅读详情

FatMouse's Speed

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13391    Accepted Submission(s): 5893
Special Judge


Problem Description
FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you want to take the data on a collection of mice and put as large a subset of this data as possible into a sequence so that the weights are increasing, but the speeds are decreasing.
 

Input
Input contains data for a bunch of mice, one mouse per line, terminated by end of file.

The data for a particular mouse will consist of a pair of integers: the first representing its size in grams and the second representing its speed in centimeters per second. Both integers are between 1 and 10000. The data in each test case will contain information for at most 1000 mice.

Two mice may have the same weight, the same speed, or even the same weight and speed. 
 

Output
Your program should output a sequence of lines of data; the first line should contain a number n; the remaining n lines should each contain a single positive integer (each one representing a mouse). If these n integers are m[1], m[2],..., m[n] then it must be the case that 

W[m[1]] < W[m[2]] < ... < W[m[n]]

and 

S[m[1]] > S[m[2]] > ... > S[m[n]]

In order for the answer to be correct, n should be as large as possible.
All inequalities are strict: weights must be strictly increasing, and speeds must be strictly decreasing. There may be many correct outputs for a given input, your program only needs to find one. 
 

Sample Input
6008 1300 6000 2100 500 2000 1000 4000 1100 3000 6000 2000 8000 1400 6000 1200 2000 1900
 

Sample Output
4 4 5 9 7
 


根据w升序排序,然后对s求最长递减子序列,注意保存每个元素的位置用于最后输出


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <stack>

using namespace std;

//w为体重,s为速度,pos为最初输入时在数组中的位置
struct node {
	int w, s, pos;
}a[1005];

bool cmp(node x, node y) {
	return x.w < y.w;
}

int ans[1005], pre[1005];

int main()
{
	int tw, ts, len;
	len = 0;
	while (~scanf("%d%d", &tw, &ts)) {
		a[len].w = tw;
		a[len].s = ts;
		a[len].pos = len; //记录每个node的在数组中原来的位置,注意此时是从0开始的,回来打印的时候要加1
		len++;
	}

	sort(a, a + len, cmp);  //根据w升序排列

	memset(ans, 0, sizeof(ans));
	ans[0] = 1; //初始化边界
	pre[0] = 0;

	int maxn, index, MAX = 1;  //最长递减子序列长度MAX初始为1
	for (int i = 1; i < len; i++) { //i: 1 -> len - 1
		maxn = 1;  //当前位置i的最长长度初始为1
		index = i; //初始的前驱为i自身
		//考察前面的最优解,即i之前到比a[i].s大的某个位置j的最长子序列长度
		for (int j = 0; j < i; j++) {
			//注意还要满足a[j].w < a[i].w,因为题目要求w严格递增
			if (a[j].s > a[i].s && a[j].w < a[i].w && ans[j] + 1 > maxn) {
				maxn = ans[j] + 1;
				MAX = max(MAX, maxn); //注意更新最大值
				index = j;
			}
		}
		//到当前位置的递减子序列长度最大值是maxn
		ans[i] = maxn;
		//记录前驱,用于最后输出
		pre[i] = index;
	}
	printf("%d\n", MAX);
	int dx;
	//查找最长递减子序列的最后一个元素的位置dx
	for (int i = 0; i < len; i++) {
		if (ans[i] == MAX) {
			dx = i;
			break;
		}
	}
	//用一个栈输出对前驱进行处理
	//注意最后要输出的是刚开始时在数组里的位置
	//当某个元素的前驱是自身的时候说明它就是最长子序列的第一个元素
	//跟并查集找父节点的思想如出一辙
	stack<int> s;
	do {
		s.push(a[dx].pos + 1);
		dx = pre[dx];
	} while (pre[dx] != dx);
	s.push(a[dx].pos + 1);

	//输出经栈处理过的顺序
	while (!s.empty()) {
		printf("%d\n", s.top());
		s.pop();
	}
	return 0;
}


【数学建模】 进化计算与群体智能 遗传算法(GA)是一种用于优化和搜索问题的启发式算法。它模拟了自然选择的过程,其中个体通过遗传和变异进行繁殖,逐渐进化出更优的解。基本步骤初始化:生成初始种群。适应度评估:评估种群中每个个体的适应度。选择:根据适应度选择个体进行繁殖。交叉:选定个体对进行基因交换,生成新的后代。变异:对一些个体进行基因变异,以增加多样性。迭代:重复评估和繁殖过程,直至达到停止条件。粒子群优化算法(PSO)是一种基于群体智能的优化算法,由Kennedy和Eberhart于1995年提出。其灵感来源于鸟群觅食的行为。 阅读详情

相关推荐

统信UOS V20 安装mysql5.7.42详细教程

到bin/下,执行下面的命令,初始化mysql服务信息,得到数据库的初始密码,实际如果目录不一样记得换成自己的目录。下载后通过远程将安装包上传至服务器,我这里将安装包上传至/usr/local/mysql 下。ps:这时候如果还是不能远程访问的话,可能是防火墙的原因,命令行执行以下命令即可。再次登录,发现缺少 libtinfo.so.5文件,再次建立软连接。登录,发现报错,提示缺少libncurses.so.5文件,使用。创建 /var/lib/ 下mysql目录。登录成功,修改密码,设置远程访问。

为谁伫立在风中 1万+

【最长上升子序列LIS+路径记录】HDU-1160 FatMouse's Speed

注解 1、最长上升子序列的变形。先按照题目要求,根据weight升序和speed降序排序,然后是利用最长上升子序列LIS算法,找到符合要求的最长序列。 2、利用pre数组记录路径。 代码 #include <iostream> #include <algorithm> #include <cstring> using namespace std; st...

zhanggirlzhangboy的博客 529

EtherCat 从站开发中遇到的问题分享

EtherCat从站 AX58100

yu_arius的博客 2058

HDU-1160 FatMouse's Speed

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 题意:很多老鼠,每个老鼠有w(重量)和s(速度)两个属性,要求选一些老鼠,使他们的w严格递增且s严格递减,输出个数和老鼠的标号 思路:按照w升序排序,再求s的最长上升子序列(LIS),不过要注意的是本题还要求记录路径,为了方便,我用的是O(n^2)的路径存储算法我不会nlogn的,这里...

weixin_30709809的博客 112

STM32开发实战--解决STM32CubeMX生成代码时钟初始化卡死问题

本文详细分析了STM32CubeMX生成代码在时钟初始化阶段卡死的问题,提供了多种解决方案,包括简单修改和稳健的等待机制。通过深入探讨HAL库的时钟初始化陷阱及硬件层面的根本原因,帮助开发者快速定位并解决STM32开发中的常见问题。

weixin_26965807的博客 439

【dify】 dify环境变量配置说明

SMTP_SERVER、SMTP_PORT、SMTP_USERNAME、SMTP_PASSWORD、SMTP_USE_TLS、SMTP_OPPORTUNISTIC_TLS:当 MAIL_TYPE 为 smtp 时,SMTP服务器的相关配置。UPLOAD_IMAGE_FILE_SIZE_LIMIT、UPLOAD_VIDEO_FILE_SIZE_LIMIT、UPLOAD_AUDIO_FILE_SIZE_LIMIT:分别为上传图像、视频、音频文件的大小限制(MB)。

tonysh_zds的博客 7355

HDU1160(FatMouse's Speed)

题目入口 题意 题目耐心一点看,大概意思就是说每一行给出一只老鼠的体重和速度,然后证明题目中的一个结论:体重增重,速度减慢,很明显就是一个LIS问题的变种。然后输出“最长上升子序列的长度”,以体重作为第一排序标准,然后再以速度做为第二排序标准,体重大的放在后面,速度大的放在前面。 思路 因为题目要输出最长上升子序列输入时候的序号,输入数据的体重和速度都是无序的,要求最长的上升子序列那么需要对这个...

weixin_43808717的博客 317

详细指南:如何在TI C2000基于C28x的微控制器上部署FreeRTOS_C语言实现

FreeRTOS是一个小型、开源、实时的嵌入式操作系统内核。它为多种微控制器和处理器提供了支持,包括ARM、AVR、MSP430和PIC等。小型和轻量级:适合资源受限的嵌入式系统。实时性:可以满足严格的实时要求。多任务支持:支持多任务并发执行。内存管理:提供了多种内存管理策略。模块化设计:用户可以根据需要选择所需的功能模块。TI C2000系列微控制器是专为实时控制应用设计的。高性能C28x核:提供了高速的浮点运算能力。丰富的外设:包括PWM、ADC、DAC、通信接口等。低功耗。

qq_38334677的博客 1606

HDU 1160 FatMouse's Speed 最长上升子序列,重拾DP

最简单的DP。。。并且在被提示了考虑dp[i]为i结尾的子序列的最长子序列,各种姿势还是没做出来。。 把体重降序排列,就变成了求速度的最长上升子序列,输出正是按次要求,也不用再倒序; n n^2复杂度足以;但是LIS有nlogn的算法:点击打开链接 /* *********************************************** Author :angon

卡尔 781

学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了使用Simulink实现四开关Buck-Boost(FSBB)变换器无缝模式切换的仿真方法。FSBB变换器因其输入输出同极性、单电感和双向能量流特性,广泛应用于光伏储能、USB-PD和车载电源等场景。文章重点解决了模式切换中的直通风险和占空比跳变问题,通过统一电压PI控制、Stateflow模式仲裁和200ns死区设计,实现了Buck(26V→24V)、Pass-Through(24V±1V)和Boost(22V)三种工作模式的无缝过渡。仿真结果显示输出电压稳定在12V±0.15V,切换过程无

amy_mhd的博客 65

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介

Soly_kun的博客 359

HDU - 1160 FatMouse's Speed

input: 6008 1300 6000 2100 500 2000 1000 4000 1100 3000 6000 2000 8000 1400 6000 1200 2000 1900    output: 4 4 5 9 7    题目大意: 有cnt组数据,每组有体重和速度两个值,求其最长上升子序列并打印出他...

DDDDDDDDDD4444444444的博客 185

Python爬虫实战:构建高可用静态网页爬虫 - 以 Quotes 网站数据采集为例!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 461

HDU 1160 FatMouse's Speed (最长上升子序列+路径输出)

Problem Description FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you want to take the data on a collection of mice and put as large a subset of this data as p

←_← 449

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HDU1160 FatMouse's Speed(lis)

FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20657    Accepted Submission(s): 9154Special Judge   Problem Description Fa...

fighting_yifeng的博客 251

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Hdu 1160 FatMouse's Speed (LIS路径输出)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 题意:给出n个老鼠的重量和速度值(先重量后速度),要求给出一个最长的排列,其中,前一只老鼠的重量严格小于后一只老鼠,而它的速度要严格大于后一只老鼠。排列可能有多种,只要求出一种就可以了。 思路:排序后转化为最长上升子列。 忽略了可能有多种正确排列,白白调试好久…… #include #

whyorwhnt的专栏 966

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

HDU 1160 FatMouse's Speed

简单DP,最长上升子序列。先对W排序,然后对S做做LIS #include<cstdio> #include<cstring> #include<cmath> #include<stack> #include<vector> #include<algorithm> using namespace std; ...

weixin_34240520的博客 68

hdu1160_FatMouse's Speed 最大上升子序列

FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 14806    Accepted Submission(s): 6521 Special Judge Problem Descript

路漫漫其修远兮 239

HDU 1160 FatMouse's Speed (记录路径的最长上升子序列)

题意 很多肥老鼠认为,长的越肥,奔跑速度就越快,为了反驳这个观点,你现在需要对老鼠的体重和速度进行研究,你要在老鼠序列中找出一个子序列,使得老鼠的体重在增加,但是速度却在减慢 很多肥老鼠认为,长的越肥,奔跑速度就越快,为了反驳这个观点,你现在需要对老鼠的体重和速度进行研究,你要在老鼠序列中找出一个子序列,使得老鼠的体重在增加,但是速度却在减慢 Input 输入以eof结束。 输入中每行有...

EnjoyingAC的博客 383

HDU-1160-FatMouse's Speed(线性DP,LIS)

FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20784    Accepted Submission(s): 9220Special Judge Problem Description FatM...

随便写写 278

HDU1160 FatMouse's Speed(最长上升子串)

题目链接:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=3&amp;sectionid=2&amp;problemid=4 题目大意:按体重上升,速度下降排序后,提取符合条件的最长子序列,以证明体重越高,速度越慢 参考链接:https://blog.youkuaiyun.com/liyongfan152/article/detail...

weixin_42374305的博客 206

HDU - 1160FatMouse's Speed(最长上升子序列+输出顺序)

FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you want to take the data on a collection of mice and put as large a subset of this data as possible into a sequence

T__TSZ的博客 536

FatMouse's Speed Hdu1160 动态规划 EOF(Ubuntu 下codeblocks 按 Ctrl+D)

FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16982    Accepted Submission(s): 7511 Special Judge Problem Description

米兰的小科比 594

hdu4283 You Are the One 区间dp 记忆化搜索or递推

You Are the One Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3032    Accepted Submission(s): 1352 Problem Description   The TV s

EventQueue的博客 1792

hdu1503 Advanced Fruits

Advanced Fruits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2300    Accepted Submission(s): 1169 Special Judge Problem Description

EventQueue的博客 916

hdu5904 LCIS dp

LCIS Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 645    Accepted Submission(s): 300 Problem Description Alex has two sequences 

EventQueue的博客 670
上一篇: poj2249 Binomial Showdown 求组合数
下一篇: hdu1224 Free DIY Tour DFS或者dp
Daemoonn
博客等级 码龄11年 42粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值