题目描述:

一根长度为1米的木棒上有若干只蚂蚁在爬动。它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右。如果两只蚂蚁碰头,则它们立即交换速度并继续爬动。三只蚂蚁碰头,则两边的蚂蚁交换速度,中间的蚂蚁仍然静止。如果它们爬到了木棒的边缘(0或100厘米处)则会从木棒上坠落下去。在某一时刻蚂蚁的位置各不相同且均在整数厘米处(即1,2,3,…99厘米),有且只有一只蚂蚁A速度为0,其他蚂蚁均在向左或向右爬动。给出该时刻木棒上的所有蚂蚁位置和初始速度,找出蚂蚁A从此时刻到坠落所需要的时间。

输入:

第一行包含一个整数表示蚂蚁的个数N(2<=N<=99),之后共有N行,每一行描述一只蚂蚁的初始状态。每个初始状态由两个整数组成,中间用空格隔开,第一个数字表示初始位置厘米数P(1<=P<=99),第二个数字表示初始方向,-1表示向左,1表示向右,0表示静止。

输出:

蚂蚁A从开始到坠落的时间。若不会坠落,输出“Cannot fall!”

样例输入:
4
10 1
90 0
95 -1
98 -1
样例输出:
98
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.Comparator;
import java.util.Arrays;class Node
{public int p, d;public Node(int p, int d) {this.p = p;this.d = d;}
}class Main
{public static final boolean DEBUG = false;public static void main(String[] args) throws IOException{Scanner cin;int n;if (DEBUG) {cin = new Scanner(new FileReader("d:\\OJ\\uva_in.txt"));} else {cin = new Scanner(new InputStreamReader(System.in));}Comparator<Node> cmp = new Comparator<Node>() {public int compare(Node a, Node b) {return a.p - b.p;}};while (cin.hasNext()) {n = cin.nextInt();Node[] node = new Node[n];int p, d;for (int i = 0; i < n; i++) {p = cin.nextInt();d = cin.nextInt();node[i] = new Node(p, d);}Arrays.sort(node, cmp);int l = 0, r = 0, a = 0;Node[] tmp = new Node[n];int j = 0, k = 0;for (int i = 0; i < n; i++) {if (j == 0 && node[i].d == 1) {tmp[k++] = node[i];l++;} else if (j == 1 && node[i].d == -1) {tmp[k++] = node[i];r++;}if (node[i].d == 0) {tmp[k++] = node[i];j = 1;a = k - 1;}}if (l == r) System.out.println("Cannot fall!");else if (l < r) {System.out.println(tmp[a + 1 + l].p);} else {System.out.println(100 - tmp[a - 1 - r].p);}}}
}

题目1159:坠落的蚂蚁相关推荐

  1. 坠落的蚂蚁【思维/模拟】

    第一行包含一个整数表示蚂蚁的个数N(2<=N<=99),之后共有N行,每一行描述一只蚂蚁的初始状态.每个初始状态由两个整数组成,中间用空格隔开,第一个数字表示初始位置厘米数P(1<= ...

  2. 【蓝桥杯】题目 1429: 兰顿蚂蚁

    思路: 模拟 #include<iostream>#include<vector>#include<string>using namespace std;int m ...

  3. 王道考研机试指南第2版——题目提交链接

    王道考研机试指南第2版--题目链接 文章来自https://github.com/zguolee/WDAlgorithmsNote/blob/master/README.md 王道考研机试指南第2版- ...

  4. JZOJ__Day 7:【普及模拟】蚂蚁

    题目描述 n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行.当蚂蚁爬到竿子的端点时就会掉落.由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去.对于每只蚂蚁,我们知道它距离竿子左端的 ...

  5. 蚂蚁从飞机上掉下来的数学建模分析

    原文链接:蚂蚁从飞机上掉下来会摔死吗?[微信公众号:数学建模andMATLAB] 蚂蚁从飞机上掉下来会摔死吗?为什么会想到这个问题呢?这还得从杜甫的一首诗说起.....               独 ...

  6. [蓝桥杯][2014年第五届真题]兰顿蚂蚁(模拟)

    题目描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左 ...

  7. [蓝桥杯][2014年第五届真题]兰顿蚂蚁-模拟

    题目描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左 ...

  8. 蓝桥杯-兰顿蚂蚁(python)

    题目 1429: 蓝桥杯2014年第五届真题-兰顿蚂蚁 时间限制: 1Sec 内存限制: 128MB 提交: 6100 解决: 2797 题目描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属 ...

  9. LQ0213 兰顿蚂蚁【模拟】

    题目来源:蓝桥杯2014初赛 Java A组H题 题目描述 兰顿蚂蚁,是于 1986 年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只& ...

最新文章

  1. Oracle 表空间 创建参数 说明
  2. mybatis开发dao的方法——(三)
  3. 64位汇编之linux系统调用
  4. Spring-AOP 通过配置文件实现 引介增强
  5. To Java程序员:切勿用普通for循环遍历LinkedList
  6. 哈理工大学计算机专业宿舍,计算机学院举办“灯塔工程”之寝室文化节
  7. flex 布局以及样式
  8. spring java code配置_Spring-09-使用Java的方式配置Spring
  9. !doctype html报错h5,【Web前端问题】javascript import 报错
  10. UITableView 性能优化
  11. 用python绘制一条直线_python绘制直线的方法
  12. 图论 —— 网络流 —— 费用流 —— MCMF 算法
  13. 为什么不用php做系统吗,IT行业:为什么大部分人都不认可php语言呢?
  14. 什么是闭包?如何理解及使用闭包?
  15. 猜数字的算法的一个简单实现
  16. 用flashAS3.0做一个连线题
  17. 区块链会计案例_或许你也曾想过:区块链正在改变着会计行业!
  18. c语言错误c1083是什么意思,fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directo...
  19. 基于BottledWater-PG+nodejs实时地图应用实践
  20. JS添加/修改CSS样式

热门文章

  1. 吴昊品游戏核心算法 Round 7 —— 熄灯游戏AI(有人性的Brute Force)(POJ 2811)
  2. Ajax Toolkit Control ——CollapsiblePanelExtender(隐藏显示效果)
  3. mysql导入分卷_php实现mysql备份恢复分卷处理的方法_PHP
  4. python基础代码事例-python基础示例
  5. python使用界面-如何使用python图形化界面wxPython
  6. python教程书籍-初学者最好的Python书籍列表
  7. python matplotlib散点图-python的matplotlib散点图
  8. python面试题及答案-50道Python面试题集锦(附答案)
  9. python web-2019年Python Web五大主流框架
  10. python的工作方向-python最赚钱的4个方向,你最心动的是哪个?