xoj1534(poj 1201)题解

本文介绍了一种利用差分约束系统解决最短路径问题的方法,并通过具体实例展示了如何建立约束条件及使用SPFA算法求解。文章详细解释了正向与反向边的建立过程,最终通过代码实现了解决方案。

题目点击打开链接

差分约束

根据题意我们可以列出多组不等式

① f(b1+1)-f(a1)>=c1,

     f(b2+1)-f(a2)>=c2

     ...

     f(bn+1)-f(an)>=cn

     所以可以建边(ai,bi+1,ci)

②同时我们要发现隐含的约束条件:

     f(i)-f(i-1)>=0

     f(i)-f(i-1)<=1移向后变为f(i-1)-f(i)>=-1

     所以可建边(i-1,i,0)

                       (i,i-1,-1)

③最后用SPFA求一下最大路径(根据建边的方式(移向的方式)选择求最大路径或最小路径,本质一样,结果互为相反数

代码如下:

#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#define _(d) while(d (((ch=getchar())>47)&&ch<58))
using namespace std;
const int MaxN=50005;
const int Maxe=MaxN<<3;
const int inf=0x7fffffff;
int n,tt,mx,mn,d[MaxN],h[MaxN],to[Maxe],s[Maxe],nxt[Maxe];
bool vst[MaxN];
inline void Get(int &x){char ch;_(!);x=ch-48;_()x=(x<<3)+(x<<1)+ch-48;}
inline void add(int u,int v,int c)
{
    to[++tt]=v;s[tt]=c;nxt[tt]=h[u];h[u]=tt;	
}
queue<int> q;
inline void spfa()
{
	for(int i=0;i<MaxN;i++) vst[i]=0,d[i]=-inf;//init
	q.push(mn);
	vst[mn]=1;
	d[mn]=0;
	int u;
	while(!q.empty())
	{
	    u=q.front();q.pop();vst[u]=0;//invoke
		for(int i=h[u];i;i=nxt[i])
		{
		    int v=to[i];
			if(d[v]<d[u]+s[i])
			{
				d[v]=d[u]+s[i];//loosen
			    if(!vst[v])//make it in queue
				{
					q.push(v);
					vst[v]=1;
				}
		    }
		}		
	}
	
}
int main()
{
	freopen("1534.in","r",stdin);
	int a,b,c;
	Get(n);
	for(int i=1;i<=n;i++)
	{
	    Get(a);Get(b);Get(c);
	    mx=max(mx,b+1);
	    mn=min(mn,a);
		add(a,b+1,c);
	}
	for(int i=mn;i<=mx;i++)
	{
	    add(i,i-1,-1);
		add(i-1,i,0);	
	}
	spfa();
	printf("%d\n",d[mx]);
    return 0;	
}

内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值