读书笔记<程序设计>---Ants

Ants

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

限制条件:

1<=L<=10^6

1<=n<=10^6

0<=xi<=L

一般思路如下:

#include <stdio.h>
#include <stdlib.h>
#define max(x,y)   ((x>y)?x:y)
#define min(x,y)   ((x<y)?x:y)
int a[1000000];
int main(int argc, char *argv[])
{
  int maxnum=0,minnum=0;
  int i,n,l;
  scanf("%d",&l);
  scanf("%d",&n);
  for(i=0;i<n;i++){
                   scanf("%d",&a[i]);
  }
  for(i=0;i<n;i++){
                   maxnum=max(maxnum,max(l-a[i],a[i]));
                   minnum=max(minnum,min(l-a[i],a[i]));
  }
  printf("%d %d \n",minnum,maxnum);
  free(a);
  system("PAUSE");
  return 0;
}

注意要点:

1.对于a[1000000]要设置为全局变量,否则程序不能运行,因为局部变量存放在内存栈中,其的大小是有限的。

2.还可以利用申明空间的方式int *a=(int*)malloc(sizeof(int)*1000000),然后free(a)。

3.时间复杂度为o(n)。

4.此题要理解题意,就好比如在最短时间内完成洗衣、做饭、烧水、敲代码。

时间: 2024-11-13 19:07:46

读书笔记<程序设计>---Ants的相关文章

读书笔记--程序设计

三角形的构建:有n根棍子,棍子i的长度为ai.要想从中选出3根棍子组成周长尽可能长的三角形.请输出最大的周长,若无法组成三角形则输出0. 限制条件: 1.3<=n<=100 2.1<=ai<=10^6 算法的主要思想:o(n^3)的复杂度,利用三层for循环找出每条边对应的符合条件的最大边长长度. #include <stdio.h> #include <stdlib.h> #define max(x,y) ((x>y)?x:y) int main(i

《Javascript高级程序设计》读书笔记之对象创建

<javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决对象识别问题,所有对象都仅是Object的实例 function createPerson(name,age,job) { var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name)

程序设计导引及在线实践 读书笔记2.1 —— 鸡兔同笼

http://blog.csdn.net/pipisorry/article/details/36433305 问题描述 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外).已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物. 输入 第1行是测试数据的组数n,后面跟着n行输入.每组测试数据占1行,每行一个正整数a (a < 32768) 输出 输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开

Java核心技术 卷1 读书笔记 (3 Java基本程序设计结构)

3.3 数据类型 Java是强类型语言,必须为每一个变量声明一种类型. 3.3.1 整型 Java 提供四种整型 int 4字节 short 2字节 long 8字节 byte 1字节 长整型(long)数值有一个后缀L(例如40000000000L),十六进制数值有一个前缀0x(例如0xCAFE),八进制数值有一个前缀0(例如010). 3.3.2 浮点型 Java提供两种浮点类型 float 4字节 double 8字节 float类型的数值有一个后缀F(例如3.42F),没有后缀F的浮点数

《Linux程序设计》&mdash;&mdash;读书笔记(2)

Linux环境: 无论操作系统何时启动一个新程序,参数argc和argv都会被设置并传递给main(即使main函数未声明参数,此时只是不能使用这些参数).这些参数通常由另一个程序提供,一般是shell,它要求操作系统启动该新程序.shell会接受用户输入的命令行,将命令行分解成单词,然后把这些单词放入argv数组. 命令行参数在向程序传递信息方面很有用,很多工具程序使用命令行参数来改变程序的行为或设置选项(这一点我们很熟悉,但是可能很少会联想到正是argc.argv参数在这里发挥作用). 尽管

读书笔记 - js高级程序设计 - 第十五章 使用Canvas绘图

读书笔记 - js高级程序设计 - 第十三章 事件 canvas 具备绘图能力的2D上下文 及文本API 很多浏览器对WebGL的3D上下文支持还不够好 有时候即使浏览器支持,操作系统如果缺缺乏必要的绘图驱动程序,则浏览器即使支持了也没用   <canvas> var drawing = document.getElementById("drawing"); if( drawing.getContext ){ drawing.getContext("2d"

《JavaScript 高级程序设计》读书笔记一 简介

一   历史 二   实现 a. javascript三个部分: ECMAScript:由ECMA-262定义,提供核心语言功能: DOM:提供HTML的应用程序编程接口/提供访问和操作网页内容的方法和接口: BOM:提供与浏览器交互的方法和接口: 三   版本 <JavaScript 高级程序设计>读书笔记一 简介

《JavaScript 高级程序设计》读书笔记二 使用JavaScript

一   <script>元素 a.四个属性: async:立即异步加载外部脚本: defer:延迟到文档完全被解析再加载外部脚本: src:外部脚本路径: type:脚本语言的内容类型: 二   XHTML中用法 a. //<![CDATA[ javascript代码 //]]> 三   <noscript>元素 <JavaScript 高级程序设计>读书笔记二 使用JavaScript

《Linux程序设计》&mdash;&mdash;读书笔记

UNIX是一套计算机操作系统应遵循的特定规范(定义了所有必需的操作系统函数的名称.接口和行为),完全符合该规范的操作系统才允许使用"UNIX"的商标,否则就是"类UNIX操作系统". 许多类UNIX系统都是商业性质的,如IBM的AIX,HP的HP-UX和Sun的Solaris:也有一些免费的,如FreeBSD和Linux. Linux是一个可以自由发布的类UNIX内核实现.发展之路:UNIX->Minix->Linux. Linux程序: Linux应用