牛客:游游的旅行(DP+DFS)

本文介绍了一个基于图论和动态规划的算法,用于优化主角“游游”和其小伙伴在有限时间内访问多个地点所获得的愉悦度。通过预计算节点间路径和时间消耗,以及每个节点带来的愉悦度增益,该算法能够有效求解最优路径选择问题。

https://www.nowcoder.com/practice/03dbf07704a443cdbfe66253aa1bfe02?tpId=182&&tqId=34885&rp=1&ru=/activity/oj&qru=/ta/exam-all/question-ranking

// 参考https://www.nowcoder.com/profile/873781650/codeBookDetail?submissionId=57839462
#include<iostream>
using namespace std;
#define NUM 100+10
#define K 500
struct happy {
	double u; // 游游的愉悦度
	double v; // 小伙伴的愉悦度
	happy() : u(0), v(0) {}
	happy(double x, double y) : u(x), v(y) {}
};
int n; // 节点数目
// node_t保存各节点花费时间,happy_u游游在各节点获取的愉悦度,happy_v小伙伴在各节点获取的愉悦度
int node_t[NUM], happy_u[NUM], happy_v[NUM];
// 两节点之间的时间
int path_t[NUM][NUM];
// dp[i][j]表示在i点同时剩余j时间时,当前获取的愉悦度
happy dp[NUM][K];
happy dfs(int node, int remain_t) {
	if (dp[node][remain_t].u != 0 && dp[node][remain_t].v != 0)
		return dp[node][remain_t];
	int cnt = 0; // 记录可以到达的节点个数
	happy res;
	for (int i = 1; i <= n; i++) {
		if (i == node || path_t[node][i] == 0) continue;
		happy now;
		if (remain_t - path_t[node][i] - node_t[i] >= 0) {
			cnt += 1;
			now = dfs(i, remain_t - path_t[node][i] - node_t[i]);
			res.u += now.u;
			res.v += now.v;
		}
	}
	if (cnt == 0) cnt = 1;
	res.u /= cnt;
	res.u += happy_u[node];
	res.v /= cnt;
	res.v += happy_v[node];
	dp[node][remain_t] = res;
	return res;
}
int main()
{
	int m, k;
	cin >> n >> m >> k;
	for (int i = 1; i <= n; i++) {
		cin >> node_t[i] >> happy_u[i] >> happy_v[i];
	}
	int a, b, t;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			path_t[i][j] = 0;
	for (int i = 0; i<m; i++) {
		cin >> a >> b >> t;
		path_t[a][b] = t;
		path_t[b][a] = t;
	}

	for (int i = 0; i<NUM; i++)
		for (int j = 0; j<K; j++)
			dp[i][j].u = dp[i][j].v = 0;
	happy res;
	for (int i = 1; i <= n; i++) {
		if (k - node_t[i]<0)
			continue;
		happy now;
		now = dfs(i, k - node_t[i]);
		res.u += now.u / n;
		res.v += now.v / n;
	}
	printf("%.5lf %.5lf", res.u, res.v);
	return 0;
}

 

内容概要:本文围绕《【卫星信号】模拟卫星信号传播研究(Matlab代码实现)》这一技术资源展开,系统介绍了利用Matlab进行卫星信号传播过程建模与仿真的方法。该资源聚焦于构建卫星信号在复杂空间环境中的传播模型,综合考虑自由空间路径损耗、大气吸收、多径效应、多普勒频移、电离层闪烁及噪声干扰等多种物理因素,通过Matlab编程实现信号传输特性的动态仿真与可视化分析,帮助研究人员深入掌握卫星通信信道的关键特性与建模流程。; 适合人群:具备Matlab编程能力和通信原理基础知识的高校研究生、科研机构研究人员及从事卫星通信、导航定位、遥感遥测等领域的工程技术人员,特别适用于需要完成相关课题仿真、毕业设计或项目开发的初级与中级科研人员。; 使用场景及目标:①用于教学与课程设计中加深对卫星信号传播机制的理解;②支撑卫星通信系统链路预算、接收机灵敏度分析与抗干扰算法设计;③服务于学术论文撰写、科研项目申报中的仿真验证环节,提供可复用的代码框架与建模思路。; 阅读建议:建议读者结合经典通信理论教材同步学习,重点剖析代码中关于信号调制、信道建模、噪声叠加与接收端解调等模块的实现逻辑,动手运行并调整轨道参数、频率、环境条件等变量,观察信号质量变化,从而深化对卫星信道动态行为的认知。
内容概要:本文系统介绍了2024年最新提出的两种智能优化算法——青蒿素优化算法与霜冰优化算法(RIME),并通过Matlab代码实现对二者进行了深入对比研究。文档不仅阐述了两种算法的核心原理与数学模型,还全面展示了其在电力系统优化、新能源调度、路径规划、机器学习参数调优等复杂工程问题中的应用性能差异。文中涵盖了微电网调度、电动汽车充电优化、无人机三维路径规划、风光互补制氢系统调度等多个前沿科研方向的典型案例,并配套提供了完整的Matlab仿真代码与模型资源,便于读者复现高水平学术论文成果并开展创新性研究。; 适合人群:具备一定编程基础,熟练掌握Matlab/Simulink环境,正在从事智能优化算法相关研究的研究生、高校教师及工程技术人员,尤其适用于专注于能源系统优化、智能交通、智能制造、自动化控制等领域的科研工作者。; 使用场景及目标:①深入理解青蒿素算法与RIME算法的基本思想、迭代机制与收敛特性;②通过实际代码复现EI、顶刊级别论文中的优化模型;③在具体科研项目中对比两类算法的寻优能力、稳定性与计算效率,完成算法选型与改进;④拓展新型优化算法在多能互补系统、智能路径规划、分布式调度等交叉学科中的创新应用。; 阅读建议:建议读者结合网盘提供的完整代码资源,按照文档中给出的应用实例循序渐进地实践操作,重点关注不同场景下的参数设置策略、算法收敛曲线分析与鲁棒性表现,同时关注公众号“荔枝科研社”获取持续的技术支持与更新资料。
内容概要:本文档聚焦于“直流电机双闭环控制Matlab仿真”,系统阐述了基于Matlab/Simulink平台的直流电机双闭环控制系统的设计与仿真方法。重点围绕电流环与转速环的协同控制策略,详细介绍了控制器结构设计、PI参数整定、系统建模及动态响应分析过程,实现了对电机速度和电流的高精度调控。文档充分展示了双闭环控制在提升系统稳定性、加快响应速度和增强抗干扰能力方面的优越性能,并结合电力电子变换器(如Buck电路)的双闭环控制案例,拓展了该技术在实际工程中的应用范围。资源配套完整,适用于理论学习与实践操作相结合的研究需求。; 适合人群:具备自动控制原理基础知识和Matlab/Simulink软件操作能力的高校本科生、研究生,以及从事电机控制、电力电子系统开发等相关领域的工程技术人员。; 使用场景及目标:①深入理解直流电机双闭环控制的核心原理与工程实现方法;②掌握利用Matlab/Simulink进行控制系统建模、仿真与性能评估的关键技能;③为课程设计、毕业论文、科研项目或工业控制系统开发提供可复用的技术方案与仿真参考。; 阅读建议:建议读者结合文档中的Simulink模型文件,边学习边动手实践,重点关注PID控制器的参数调节过程与系统阶跃响应特性,通过对比不同参数下的仿真结果,深化对控制性能影响因素的理解,从而全面提升系统设计与分析能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值