洛谷p1007 独木桥

题目链接https://www.luogu.org/problemnew/show/P1007

题目大意:有一座长为L的桥,其坐标为1…L,桥上有n个士兵,其坐标已知,每个士兵的速度都为1,方向未知。要求所有士兵都离开独木桥的最短和最长时间。

分析:所有士兵都必须离开桥。思路借鉴《训练指南》的一道题“蚂蚁”,两只蚂蚁碰撞掉头继续走,看上去和对穿而过没有区别。士兵也一样,不考虑两个士兵具体哪个是哪个,两人相当于一直向原方向走,碰撞可看作一直走但在左的还在左,在右的还在右,全局可以这样考虑。对于每个士兵,其最优为向近的端点一直走,最劣为向远的端点一直走。最短时间即为最靠近桥中间的人走到较近端点的时间,他是最后一个到端点的士兵,最远时间为最靠近桥端点的人走到另一端的时间,他是最后一个离开桥的士兵。
注意n=0的边界情况。

ps 一道难度为普及-,代码10+行的题都没有一次性A掉,还是第二天才A掉,看来要恢复到高二时的水平任重而道远…

o(nlogn)

#include<cstdio>
#include<algorithm>
using namespace std;

int l,n,a[5005];
int minn,maxx;

int main()
{
	scanf("%d%d",&l,&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	sort(a+1,a+1+n);
	for(int i=1;i<=n;i++)minn=max(minn,min(a[i],l+1-a[i]));
	if(n>0)maxx=max(l+1-a[1],a[n]); 
	printf("%d %d\n",minn,maxx);
	return 0;
}

o(n)

#include<cstdio>
#include<algorithm>
using namespace std;

int l,n,a[5005];
int minn,maxx;

int main()
{
	scanf("%d%d",&l,&n);
	for(int i=1,pos;i<=n;i++){scanf("%d",&pos);a[pos]=1;}
	for(int i=1;i<=l;i++)if(a[i]){maxx=l+1-i;break;}
	for(int i=l;i>=1;i--)if(a[i]){maxx=max(maxx,i);break;}
	for(int i=l/2;i>=1;i--)if(a[i]){minn=i;break;}
	for(int i=l/2+1;i<=l;i++)if(a[i]){minn=max(minn,l+1-i);break;}
	printf("%d %d\n",minn,maxx);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
P1007打印机驱动是用于控制和操作HP LaserJet P1007打印机的软件。打印机驱动程序是作为连接计算机和打印机之间的桥梁的一种软件。它允许计算机向打印机发送指令,并确保打印机能够正确执行打印任务。 P1007打印机驱动的作用是将计算机系统的指令转化为打印机能够理解和执行的指令。通过安装并正确配置打印机驱动程序,用户可以通过计算机发送打印任务,并能够控制打印机的参数,如打印质量、纸张尺寸、打印方向等。 安装P1007打印机驱动需要以下步骤: 1. 下载P1007打印机驱动程序。可以从HP官方网站或其他可信资源获取驱动程序的安装文件。 2. 运行下载的驱动程序安装文件。按照安装向导的指示,选择安装目录和其他设置。 3. 连接P1007打印机到计算机。确保打印机正常开启并与计算机通过USB线缆连接。 4. 完成驱动程序的安装。安装程序会自动检测并安装所需的驱动程序文件。 5. 重新启动计算机。有时,在安装打印机驱动程序后需要重新启动计算机才能使驱动程序生效。 完成这些步骤后,P1007打印机驱动程序就已经成功安装在计算机上了。用户可以在打印任务中选择P1007打印机,并通过打印软件发送文件进行打印。同时,用户还可以通过打印机设置界面或系统打印机设置来更改打印机的参数和选项。 总而言之,P1007打印机驱动是连接计算机和打印机之间的软件桥梁,它允许用户通过计算机发送打印任务并控制打印机的参数。安装P1007打印机驱动需要遵循一定的步骤,以确保驱动程序能够正确安装并与打印机正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值