Week3作业C-区间覆盖

1.题意

数轴上有 n (1<=n<=25000)个闭区间 [ai, bi],选择尽量少的区间覆盖一条指定线段 [1, t]
( 1<=t<=1,000,000)。
覆盖整点,即(1,2)+(3,4)可以覆盖(1,4)。
不可能办到输出-1

2.样例

Input
第一行:N和T
第二行至N+1行: 每一行一个闭区间。
Output
选择的区间的数目,不可能办到输出-1
Sample Input
3 10
1 7
3 6
6 10
Sample Output
2

3.解题思路

分析:
  贪心策略:相同起点以覆盖长度最长,即以a降序,b升序排列。
  要先检验是否有区间的起点在要覆盖的区间起点上,更新分为最初起点1和新更新起点,通过判断覆盖的区间长度是否符合要覆盖的区间长度如果在循环中间断掉则说明不可能达到如果没有起点或终点为1的区间也不可能达到

4.总结

1.该题只要求覆盖整点,在比较区间的起点是s1和更新的覆盖起点s2时条件为s1<=s2+1;
2.由于本题用的覆盖长度判断所以当t=1时并没有进入循环所以要特判;
3.同时在1中,起点为1时的判断条件无需加一,因为要保证有区间起点为1
4.若输入多组数据时,max应在while内每次置零,且max==0时输出-1后应为break而非return且vector要清空;

5.AC代码

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct point{
	int x;
	int y;
	bool operator < (const point &p)const
	{
		return x !=p.x ? x<p.x : p.y<y;
	}
};
int main()
{
	int n,t,a,b;
	vector<point> v;
	scanf("%d%d",&n,&t);
	int count=0;
	bool judge=true,ju=true;
	for(int i=0;i<n;i++)
	{
		scanf("%d%d",&a,&b);
		point t1;
		t1.x=a;
		t1.y=b;
		v.push_back(t1);
	}
	sort(v.begin(),v.end());
	int q=1;
	int len=0,j;
	while(len<t-1)
	{
		int max=0;
		for(int i=0;i<v.size();i++)
		{
			point te=v[i];
			if(te.x<=(q+1)&&q>1)
			{
				if(te.y-q>max)
				{
					max=te.y-q;
				    j=i;
				}
			}
			else if(te.x<=q&&q==1)
			{
				if(te.y-q>max)
				{
					max=te.y-q;
				    j=i;
				}
			}
			else break;
		}
		if(max==0)
		{
			cout<<"-1"<<endl;
			judge=false;
			break;
		}
		len=len+max;
		count++;
		q=v[j].y;
	}
	if(t==1)
	{
		for(int i=0;i<v.size();i++)
		{
			if(v[i].x==1||v[i].y==1)
			{
				ju=false;
			}
		}
		if(ju==false) cout<<"1"<<endl;
		if(ju==true) cout<<"-1"<<endl;
	}
	if(judge==true&&t!=1) cout<<count<<endl;
	while(v.size()!=0)
	{
		v.pop_back();
	}
	return 0;
}
内容概要:本文档提供了三种神经网络控制器(NNPC、MRC和NARMA-L2)在机器人手臂模型上性能比较的MATLAB实现代码及详细解释。首先初始化工作空间并设定仿真参数,包括仿真时间和采样时间等。接着定义了机器人手臂的二阶动力学模型参数,并将其转换为离散时间系统。对于参考信号,可以选择方波或正弦波形式。然后分别实现了三种控制器的具体算法:MRC通过定义参考模型参数并训练神经网络来实现控制;NNPC利用预测模型神经网络并结合优化算法求解控制序列;NARMA-L2则通过两个神经网络分别建模f和g函数,进而实现控制律。最后,对三种控制器进行了性能比较,包括计算均方根误差、最大误差、调节时间等指标,并绘制了响应曲线和跟踪误差曲线。此外,还强调了机器人手臂模型参数的一致性和参考信号设置的规范性,提出了常见问题的解决方案以及性能比较的标准化方法。 适合人群:具备一定编程基础,特别是熟悉MATLAB编程语言的研究人员或工程师,以及对神经网络控制理论有一定了解的技术人员。 使用场景及目标:①理解不同类型的神经网络控制器的工作原理;②掌握在MATLAB中实现这些控制器的方法;③学会如何设置合理的参考信号并保证模型参数的一致性;④能够根据具体的性能指标对比不同控制器的效果,从而选择最适合应用场景的控制器。 其他说明:本文档不仅提供了完整的实验代码,还对每个步骤进行了详细的注释,有助于读者更好地理解每段代码的功能。同时,针对可能出现的问题给出了相应的解决办法,确保实验结果的有效性和可靠性。为了使性能比较更加公平合理,文档还介绍了标准化的测试流程和评估标准,这对于进一步研究和应用具有重要的指导意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值