题目1159:坠落的蚂蚁
- 题目描述:
-
一根长度为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:坠落的蚂蚁相关推荐
- 坠落的蚂蚁【思维/模拟】
第一行包含一个整数表示蚂蚁的个数N(2<=N<=99),之后共有N行,每一行描述一只蚂蚁的初始状态.每个初始状态由两个整数组成,中间用空格隔开,第一个数字表示初始位置厘米数P(1<= ...
- 【蓝桥杯】题目 1429: 兰顿蚂蚁
思路: 模拟 #include<iostream>#include<vector>#include<string>using namespace std;int m ...
- 王道考研机试指南第2版——题目提交链接
王道考研机试指南第2版--题目链接 文章来自https://github.com/zguolee/WDAlgorithmsNote/blob/master/README.md 王道考研机试指南第2版- ...
- JZOJ__Day 7:【普及模拟】蚂蚁
题目描述 n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行.当蚂蚁爬到竿子的端点时就会掉落.由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反向爬回去.对于每只蚂蚁,我们知道它距离竿子左端的 ...
- 蚂蚁从飞机上掉下来的数学建模分析
原文链接:蚂蚁从飞机上掉下来会摔死吗?[微信公众号:数学建模andMATLAB] 蚂蚁从飞机上掉下来会摔死吗?为什么会想到这个问题呢?这还得从杜甫的一首诗说起..... 独 ...
- [蓝桥杯][2014年第五届真题]兰顿蚂蚁(模拟)
题目描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左 ...
- [蓝桥杯][2014年第五届真题]兰顿蚂蚁-模拟
题目描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左 ...
- 蓝桥杯-兰顿蚂蚁(python)
题目 1429: 蓝桥杯2014年第五届真题-兰顿蚂蚁 时间限制: 1Sec 内存限制: 128MB 提交: 6100 解决: 2797 题目描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属 ...
- LQ0213 兰顿蚂蚁【模拟】
题目来源:蓝桥杯2014初赛 Java A组H题 题目描述 兰顿蚂蚁,是于 1986 年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只& ...
最新文章
- Oracle 表空间 创建参数 说明
- mybatis开发dao的方法——(三)
- 64位汇编之linux系统调用
- Spring-AOP 通过配置文件实现 引介增强
- To Java程序员:切勿用普通for循环遍历LinkedList
- 哈理工大学计算机专业宿舍,计算机学院举办“灯塔工程”之寝室文化节
- flex 布局以及样式
- spring java code配置_Spring-09-使用Java的方式配置Spring
- !doctype html报错h5,【Web前端问题】javascript import 报错
- UITableView 性能优化
- 用python绘制一条直线_python绘制直线的方法
- 图论 —— 网络流 —— 费用流 —— MCMF 算法
- 为什么不用php做系统吗,IT行业:为什么大部分人都不认可php语言呢?
- 什么是闭包?如何理解及使用闭包?
- 猜数字的算法的一个简单实现
- 用flashAS3.0做一个连线题
- 区块链会计案例_或许你也曾想过:区块链正在改变着会计行业!
- c语言错误c1083是什么意思,fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directo...
- 基于BottledWater-PG+nodejs实时地图应用实践
- JS添加/修改CSS样式
热门文章
- 吴昊品游戏核心算法 Round 7 —— 熄灯游戏AI(有人性的Brute Force)(POJ 2811)
- Ajax Toolkit Control ——CollapsiblePanelExtender(隐藏显示效果)
- mysql导入分卷_php实现mysql备份恢复分卷处理的方法_PHP
- python基础代码事例-python基础示例
- python使用界面-如何使用python图形化界面wxPython
- python教程书籍-初学者最好的Python书籍列表
- python matplotlib散点图-python的matplotlib散点图
- python面试题及答案-50道Python面试题集锦(附答案)
- python web-2019年Python Web五大主流框架
- python的工作方向-python最赚钱的4个方向,你最心动的是哪个?