POJ 1852 蚂蚁问题

Endnote期刊名缩写设置保姆级教程:告别手动修改,一键导入26627条对照表 本文提供Endnote期刊名缩写设置的保姆级教程,帮助科研人员告别手动修改,一键导入26627条权威期刊缩写对照表。详细解析ISO 4、NLM等主流缩写标准,指导术语表获取与验证,并分步演示Endnote配置流程,涵盖导入、样式联动及高级优化技巧,大幅提升文献管理效率。 阅读详情

/*
n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。
当蚂蚁爬到竿子的端点时就会掉落。
由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。
对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向。
请计算各种情况当中,所有蚂蚁落下竿子所需的最短时间和最长时间。
*/

/*
n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。
当蚂蚁爬到竿子的端点时就会掉落。
由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。
对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向。
请计算各种情况当中,所有蚂蚁落下竿子所需的最短时间和最长时间。
*/ 
#include<cstdio>
#include<iostream>
using namespace std;
#define M 1000
int L,n;
int x[M];
void solve(){
	//计算最短时间 ,最短时间的情况下,蚂蚁都朝着近的一段爬去,不会相遇。
	//求这种情况下最后一只蚂蚁落下用的时间 
	int minT=0;
	for(int i=0;i<n;i++){
		minT=max(minT,min(x[i],L-x[i]));
	}
	//计算最长时间,相遇时当作两只蚂蚁交错而过,可以看作独立运动。
	//求每只蚂蚁朝着离断点远的方向走,最后一只蚂蚁落下所用时间。 
	int maxT=0;
	for(int i=0;i<n;i++){
	    maxT=max(maxT,max(x[i],L-x[i]));
    }
    printf("%d %d\n",minT,maxT);
}
int main(){
	cin>>L>>n;
	for(int i=0;i<n;i++){
		cin>>x[i];
	}
	solve();
	return 0;
}	 

然后,题被改了。
/*
n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。
由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,
我们知道它距离竿子左端的距离Xi,并知道它初始的朝向。
请计算 最后落下的蚂蚁编号和落下的时间。
输入第一行,第一个数是L,第二个数是n,接下来一行是2n个整数,每个数之间有空格隔开,每两个数表示一只蚂蚁的Xi和它的朝向,1表示向前(即向X比较大的方向),0表示向后(即向X=0的方向)
输出两个整数,最后落下的蚂蚁号(从0开始记)和最后的时间,不要回车,如果有多个最后落下的蚂蚁,输出编号最大的。
样例输入:
39 4
19 1 10 0 14 1 25 0
输出样例:
2 25
*/
这个是用最冒泡法排的顺序

/*
n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。
由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。
对于每只蚂蚁,我们知道它距离竿子左端的距离Xi,并知道它初始的朝向。
请计算:最后落下的蚂蚁编号和落下的时间。
输入第一行,第一个数是L,第二个数是n,接下来一行是2n个整数,
每个数之间有空格隔开,每两个数表示一只蚂蚁的Xi和它的朝向,
1表示向前(即向X比较大的方向),0表示向后(即向X=0的方向)
输出两个整数,最后落下的蚂蚁号(从0开始记)和最后的时间,不要回车,
如果有多个最后落下的蚂蚁,输出编号最大的。
样例输入:
39 4
19 1 10 0 14 1 25 0
输出样例:
2 25
*/
#include<cstdio>
#include<iostream>
using namespace std;
#define M 5000 
int L,n;
int x[M],d[M];
void solve(){
	int maxT=0,T,temp;
	for(int i=0;i<n;i++){
		if(d[i]==0) T=x[i];
		else T=L-x[i];
		maxT=max(maxT,T);
    }//求最后一只蚂蚁掉落时的时间 
    for(int i=0;i<n;i++){
		if(d[i]==0) x[i]=x[i]-maxT;
		else x[i]=x[i]+maxT;
	}//求在maxT时,各只蚂蚁的位置(假设蚂蚁仍旧在这条直线上) 
	for(int i=0;i<n-1;i++){
	    for(int j=0;j<n-i-1;j++){
	    	if(x[j]>x[j+1]){
	    		temp=x[j];
	    		x[j]=x[j+1];
	    		x[j+1]=temp;
			}
		}
	}//抽签法求顺序,用<algorithm>库中的sort函数更好
	for(int i=0;i<n;i++){
		if(x[i]==0||x[i]==L) temp=i;
	}
	cout<<temp<<' '<<maxT; 
}
int main(){
	cin>>L>>n;
	for(int i=0;i<n;i++){
		cin>>x[i]>>d[i];
	}
	solve();
	return 0;
}	 

然后其实有一个神仙函数很好用sort()

/*
n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。
由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。
对于每只蚂蚁,我们知道它距离竿子左端的距离Xi,并知道它初始的朝向。
请计算:最后落下的蚂蚁编号和落下的时间。
输入第一行,第一个数是L,第二个数是n,接下来一行是2n个整数,
每个数之间有空格隔开,每两个数表示一只蚂蚁的Xi和它的朝向,
1表示向前(即向X比较大的方向),0表示向后(即向X=0的方向)
输出两个整数,最后落下的蚂蚁号(从0开始记)和最后的时间,不要回车,
如果有多个最后落下的蚂蚁,输出编号最大的。
样例输入:
39 4
19 1 10 0 14 1 25 0
输出样例:
2 25
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define M 5000 
int L,n;
int x[M],d[M];
void solve(){
	int maxT=0,T,temp;
	for(int i=0;i<n;i++){
		if(d[i]==0) T=x[i];
		else T=L-x[i];
		maxT=max(maxT,T);
    }//求最后一只蚂蚁掉落时的时间 
    for(int i=0;i<n;i++){
		if(d[i]==0) x[i]=x[i]-maxT;
		else x[i]=x[i]+maxT;
	}//求在maxT时,各只蚂蚁的位置(假设蚂蚁仍旧在这条直线上) 
    sort(x,x+n);
	//用<algorithm>库中的sort函数对数组进行排序
	for(int i=0;i<n;i++){
		if(x[i]==0||x[i]==L) temp=i;
	}
	cout<<temp<<' '<<maxT; 
}
int main(){
	cin>>L>>n;
	for(int i=0;i<n;i++){
		cin>>x[i]>>d[i];
	}
	solve();
	return 0;
}	 

先这样了,有优化的话再更新。

POJ-蚂蚁行军问题 1852 import java.util.Scanner; public class Main { public  static void main(String[]  args) { int c,big,little,L,i,j,k,n; Scanner scan=new Scanner(System.in); c=scan.nextInt(); while((c-->0)) { L= 阅读详情

相关推荐

POJ 1852 Ants 蚂蚁(思维,125 ms)

一、题目描述 长为 l cm 的水平杆上共有 n 只蚂蚁,爬行方向不明。第 i 只蚂蚁离左端的距离为 p[i] 。 第一行输入单个变量 t ,为测试样例数。 每个样例的第一行有两个整数,空格分隔,l 和 n 分别为水平杆的长度和蚂蚁的数量。 接下来一行 n 个数,每两个数用空格分隔,代表 n 只蚂蚁离杆左端的距离。 每只蚂蚁的长度不计,速度全部为 1 cm / s 。如果两只蚂蚁相遇,会各自立即往...

COFACTOR 360

蚂蚁掉落问题

偶遇一个有意思的编程题,其实是个智力题。 问题: n 只蚂蚁以每秒1cm 的速度在长为Lcm 的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向。请计算所有蚂蚁落下竿子所需的最短时间和最长时间。 思路: 看到这个问题的第一反应是推极端,最短时间是极端情况,最长时间也是...

yanchenzhi的博客 1378

从补码原理到实践:RISC-V中addi指令的符号扩展机制详解

本文深入解析了RISC-V架构中addi指令的符号扩展机制。从补码的数学原理出发,详细阐述了12位立即数在指令编码中如何通过符号位进行扩展,并结合lui指令,揭示了加载任意32位立即数的正确方法与实践陷阱,帮助开发者编写高效可靠的底层代码。

weixin_29161719的博客 139

蚂蚁相遇问题的巧解

题目:n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,他们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离竿子左端的距离为Xi,但不知道它当前的朝向,请计算所有蚂蚁落下竿子所需的最短时间和最长时间。

qzq2514的博客 6797

在Ubuntu 20.04上,用EtherCAT Igh 1.6.2驱动高创BD3E伺服电机(附完整C代码)

本文详细介绍了在Ubuntu 20.04实时内核环境下,使用EtherCAT Igh 1.6.2主站驱动高创BD3E伺服电机的完整实现方案。从实时系统配置、伺服电机PDO映射到精确控制线程设计,提供了完整的C代码样例和实际项目中的调试技巧,帮助开发者实现工业自动化中的高精度运动控制。

weixin_30772105的博客 111

FPGA调试利器:VIO与ILA在Vivado中的实战应用指南

本文详细介绍了Vivado中FPGA调试工具VIO与ILA的实战应用技巧。VIO作为虚拟输入/输出工具,可实时调整参数;ILA作为集成逻辑分析仪,能高效捕获内部信号。文章通过具体案例展示了如何配置ILA采样深度、触发条件,以及VIO的动态参数调整功能,帮助开发者提升上板调试效率,解决常见通信失败、数据不同步等问题。

weixin_42553471的博客 424

训练赛-蚂蚁

n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离竿子左端的距离xi,但不知道它当前的朝向。请计算各种情况当中,所有蚂蚁落下竿子所需的最短时间和最长时间。 #include #include #include using namespace std; int n,l,mxans,mians,i,a; int main() { scanf("%d%d",&n,&amp

qq_51142042的博客 283

群晖NAS安装HomeAssistant保姆级教程:从Docker部署到智能设备接入

本文提供了一份详尽的群晖NAS安装HomeAssistant保姆级教程,涵盖从Docker部署到智能设备接入的全过程。通过规划存储路径、配置容器环境变量和网络模式,确保系统稳定运行。教程还介绍了如何接入小米、苹果HomeKit等智能家居设备,并利用自动化与仪表盘打造本地化、高响应速度的智能中枢,实现数据隐私与远程控制的完美平衡。

play7的博客 694

洛谷P1007: 独木桥 & 51Nod 1266:蚂蚁

https://www.luogu.org/problemnew/show/P1007 输入输出样例 输入样例#1: 复制 4 2 1 3 输出样例#1: 复制 2 4 和蚂蚁感冒一样,只要理解成每个士兵的方向不变即可找到规律。 蚂蚁感冒: https://blog.youkuaiyun.com/qq_41505957/article/details/83546356 ...

526

基于STM32L4XX、HAL库的DP83822 以太网收发器(PHY)驱动程序设计

一、简介:DP83822是德州仪器(TI)推出的一款低功耗、高性能10/100Mbps以太网物理层收发器(PHY)。它具有以下主要特性:支持10BASE-T和100BASE-TX以太网标准低功耗设计,适合嵌入式应用MII/RMII接口,方便与微控制器连接内置自检和诊断功能支持自动协商和手动配置工业级温度范围(-40°C至+85°C)

zhusl6688的博客 528

Cesium 实现气象(温度,降水,风速)可视化详细代码实现

本教程介绍了使用Cesium实现气象数据可视化的方法,主要包括:1) 搭建Cesium开发环境;2) 三种核心气象要素的展示技术:温度热力图(基于颜色渐变和点密度)、降水区域填充(矩形着色)和风速风向(粒子系统);3) 数据集成方案,包括模拟数据生成和API对接;4) 高级功能如3D温度柱和时间序列动画;5) 性能优化策略,如数据聚合和LOD控制。教程提供了完整的代码示例,从基础配置到视觉效果实现,帮助开发者构建交互式气象可视化应用。

专注AI大模型,软件混淆,授权 1851

牛客oj 习题2.11坠落的蚂蚁(模拟) && poj1852Ants(贪心)(蚂蚁问题)

两题都是蚂蚁爬杆问题。。所以放在一起了。 第一个是复试题,因为不同蚂蚁撞在一起交换速度,所以分情况,一动一不动相当于接力,两个相向相当于换位。所以对于速度为0的蚂蚁来说,如果左右两边都有一只朝自己走的蚂蚁,那方向不变但初始位置变成最后交换位置的蚂蚁初始位置。 仔细想想(想的过程就不说了)就可以变成首先计算出左右两方各有多少蚂蚁,把能够遇见的蚂蚁当成同归于尽,不动蚂蚁落下的时间就是未同归于...

Iguodala的博客 912

AI测试:手把手教你用AI生成测试用例并支持导出Excel「喂饭教程」

如果我告诉你,有一种方法,你只需要输入需求内容,AI就能自动帮你设计出结构清晰、覆盖全面的测试用例,并直接生成一份精美的Excel表格,你会不会心动?

blues_C的博客 3885

POJ-1852 Ants

Vjudge笔记 POJ-1852 Ants 题意:一群蚂蚁在一根长l厘米的水平杆上行走,每根杆的速度恒定为1厘米/秒。当一只蚂蚁到达杆的末端时,它立刻从杆上掉下来。当两只蚂蚁相遇时,它们会转身向相反的方向走。我们知道蚂蚁在柱子上的原始位置,不幸的是,我们不知道蚂蚁行走的方向。你的任务是计算所有蚂蚁从极点上掉下来所需要的最早和最晚的可能时间。 解读: 1.无视碰撞。 2.最短时间 找到最靠近杆中点...

TPYEF_CHJZ的博客 318

C#联合Halcon机器视觉框架源码

本软件参考EV开发,共用模块,基于WPF+Halcon,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。

Z's Palace 4829

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

POJ1852 Ants

题目链接:http://poj.org/problem?id=1852 题意:给你n只蚂蚁和长为L的杆子,每只蚂蚁的速度是1cm/s,蚂蚁只有到杆子的端点才会掉落,给你每只蚂蚁距离杆子左端的距离,没告诉你蚂蚁的爬行方向,蚂蚁再爬行过程中遇到,会各自掉头,让你求所有蚂蚁下落的最短时间和最长时间 解析:由于爬行过程中,蚂蚁相互碰到,会各自掉头,其实可以理解为,蚂蚁相遇就避开,继续向前走,所以只要枚举

22h's Blog 401

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

POJ-1852(Ants)

POJ-1852(Ants)                                                                                                                                 Ants Time Limit: 1000MS   Memory Limit: 30

hpulw 578

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

POJ1852蚂蚁问题.cpp

//简要的分析一下题意思想:蚂蚁相遇,可以看做交错而过。//转化为一只蚂蚁的问题,在综合多只求最大最小就好了!#include#include#include#includeusing namespace std;const int maxn=1000010;int n,L,x[maxn];void slove(){ int Tmin=0; for(int i=0;in;i++){

NUC李钦祚的菜园子 355

POJ 1852 Ants || UVA 10881 - Piotr's Ants 经典的蚂蚁问题

两题很有趣挺经典的蚂蚁问题。 1.n只蚂蚁以1cm/s的速度在长为L的竿上爬行,当蚂蚁爬到竿子的端点就会掉落。当两只蚂蚁相撞时,只能各自反向爬回去。对于每只蚂蚁,给出距离左端的距离xi,但不知道它的朝向,求所有蚂蚁落下竿子所需要的时间的最大值和最小值。 2.问题1的升级版:把问题1改为已知每只蚂蚁的左端距离和它的朝向,要求按输入顺序输出 t 秒后每只蚂蚁的位置和状态(掉出去,转向中,或者蚂蚁的朝向)。

细语呢喃 1366

POJ 1852 Ants

POJ 1852 题意描述: 有一群蚂蚁在一根有特定长度的绳子上以1cm/s的速度移动,每只蚂蚁开始时在绳子上的位置已经给出,如果两只蚂蚁以不同方向移动到相遇则两只蚂蚁改变原本的方向移动。初始时蚂蚁移动的方向位置,问当所有蚂蚁全部掉落的最短时间和最长时间。 分析: 如果两只蚂蚁相遇,实质上是没有发生任何变化,可以等价于两只蚂蚁继续照各自原本的方向移动。因此只需要求出每只蚂蚁方向中最小时间集合中最大...

qq_41923775的博客 347

POJ-Ants-No.1852

POJ-Ants-No.1852 题目描述: 链接:http://poj.org/problem?id=1852 这个题就是有n个蚂蚁在一根L米长的木棍上爬行,当爬行到端点的时候会掉下木棍,蚂蚁的朝向不确定,但是输入的一律为朝向左端的距离。 问所有蚂蚁掉下木棍的最长和最短时间为多少? 题目分析: 其实这个题只有计算每只蚂蚁距离两端的距离即可,长的是最长时间,短的是最短时间。因为当两个蚂蚁

DLKKILL 454

《挑战程序设计江赛》P18 题目:Ants POJ 1852 需要想象力的模拟

Poj 1852 题目链接:http://poj.org/problem?id=1852Time Limit: 1000MS Memory Limit: 30000KTotal Submissions: 20836 Accepted: 8598DescriptionAn army of ants walk on a horizontal pole of length l cm, each with...

登山望远海 立马定中原 263

学习笔记-POJ-1852蚂蚁问题

Description 一支蚂蚁军队在长度为L厘米的横竿上走,每只蚂蚁的速度恒定,为1厘米/秒。当一只行走的蚂蚁到达模竿终点的时候,它就立即掉了下去;当两只蚂蚁相遇的时候,它们就调头,并开始往相反的方向走。我们知道蚂蚁在模竿上的原来的位置,但不知道蚂蚁行走的方向。请计算所有蚂蚁从模竿上掉下去的最早可能时间和最晚可能的时间。 Input 输入的第1行为样例数。每个样例首先给出2个整数,表示模竿...

Node_Su的博客 1290

poj 1852 Ants

题目:http://poj.org/problem?id=1852本题如果从常规的思想出发去解决问题是比较复杂的,而且时间复杂度会比较高,极有可能超时,但本书给出了一个非常巧妙的解法,程序简单易懂,所以我们在平时训练的过程中不能一味的最求速度,而要想清楚具体的思路或者是巧妙的方法。一般考虑当两只蚂蚁在杠上运动时,蚂蚁相互间碰到后的运动情况,这个思路直接用“穿过去”的思想,非常巧妙 附上AC代码:/

在黑夜中前行 6778
上一篇: 如何在devc++中自定义头文件并使用它
下一篇: java语言程序设计与数据结构7.1
emmaing
博客等级 码龄7年 5粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

emmaing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值