(Relax 数论1.21)POJ 3258 River Hopscotch

本文通过一道经典的二分搜索算法题目,介绍了如何利用二分搜索求解最短距离最大化的问题。题目背景设定为一条河流,需要在保留特定数量的石头前提下,最大化相邻石头间的最短距离。

本题的分析参考了http://blog.youkuaiyun.com/lyy289065406/article/details/6648558

大致题意:

一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L。

河中有n块石头,每块石头到S都有唯一的距离

问现在要移除m块石头(S和E除外),每次移除的是与当前最短距离相关联的石头,要求移除m块石头后,使得那时的最短距离尽可能大,输出那个最短距离。

 

解题思路:

经典的二分,理解题意就不怎么难了 (其实编程不难,要理解就非常难。。。。)

详细的解释看我的程序,实在看不懂就参考一下我POJ3273的做法,看上去不同,几时思路是差不多的,数学题都很难理解的,耐心吧。。。。

我感觉说了好像没说的感觉\(^o^)/~  总之看程序吧




/*
 * POJ_3258.cpp
 *
 *  Created on: 2013年11月23日
 *      Author: Administrator
 */

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int maxn = 50005;
int dist[maxn];
int l, n, m;

int main() {
	while (scanf("%d%d%d", &l, &n, &m) != EOF) {

		int low = l;//上界(一次跳跃的最短距离)
		int high = l;//下界(一次跳跃的最大距离)
		dist[0] = 0;//起点S
		dist[n + 1] = l; //终点E

		int i;
		for (i = 1; i <= n + 1; ++i) {
			if (i <= n) {//仅输入1~n
				scanf("%d", &dist[i]);
			}

			if (low > dist[i] - dist[i - 1]) {
				low = dist[i] - dist[i - 1];
			}
		}

		sort(dist, dist + n + 2);

		while (low <= high) {
			int mid = (low + high) / 2;//对最大跳和最小跳的距离折中,二分查找mid相对于最优解是偏大还是偏小
			int deleterock = 0;
			int sum = 0;

			 //假设mid是移除m个石头后的最短距离
			for (i = 1; i <= n + 1; ++i) {
				if ((sum += dist[i] - dist[i - 1]) <= mid) {
					deleterock++;
				} else {//当从第i个距离累加到i+k个距离后,若sum>mid,则k个距离作为一段
					sum = 0; //sum置0,从第i+k+1个距离重新累加
				}
			}

			if (deleterock <= m) {//本题难点之一:即使delrock==m也不一定找到了最优解
				low = mid + 1;//用当前mid值移除的石头数小于规定数,说明mid偏小
			} else {
				high = mid - 1;
			}
		}

		printf("%d\n", low);
	}

	return 0;
}


基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合数据驱动方法与Koopman算子理论的递归神经网络(RNN)模型线性化方法,旨在提升纳米定位系统的预测控制精度与动态响应能力。研究通过构建数据驱动的线性化模型,克服了传统非线性系统建模复杂、计算开销大的问题,并在Matlab平台上实现了完整的算法仿真与验证,展示了该方法在高精度定位控制中的有效性与实用性。; 适合人群:具备一定自动化、控制理论或机器学习背景的科研人员与工程技术人员,尤其是从事精密定位、智能控制、非线性系统建模与预测控制相关领域的研究生与研究人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能预测控制;②为复杂非线性系统的数据驱动建模与线性化提供新思路;③结合深度学习与经典控制理论,推动智能控制算法的实际落地。; 阅读建议:建议读者结合Matlab代码实现部分,深入理解Koopman算子与RNN结合的建模范式,重点关注数据预处理、模型训练与控制系统集成等关键环节,并可通过替换实际系统数据进行迁移验证,以掌握该方法的核心思想与工程应用技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气的东哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值