Java实现 蓝桥杯 历届试题 蚂蚁感冒
问题描述
长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。
每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。
当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。
这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。
请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。
输入格式
第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。
接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。
输出格式
要求输出1个整数,表示最后感冒蚂蚁的数目。
样例输入
3
5 -2 8
样例输出
1
样例输入
5
-10 8 -20 12 25
样例输出
3
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;public class Main {public static int n;public static ArrayList<point> num;public static int count = 1;static class point {public int position;public int id; public point(int position, int id) {this.position = position;this.id = id;}}class MyComparator implements Comparator<point> {public int compare(point arg0, point arg1) {int a = Math.abs(arg0.position);int b = Math.abs(arg1.position);if(a > b)return 1;else if(a < b)return -1;return 0;}}public void getResult() {int judge = num.get(0).position;Collections.sort(num, new MyComparator());int mid = 0;for(int i = 0;i < num.size();i++) {if(num.get(i).id == 0) {mid = i;break;}}int leftMin = 0, leftMax = 0, rightMin = 0, rightMax = 0;for(int i = 0;i < mid;i++) {if(num.get(i).position < 0)leftMin++;else if(num.get(i).position > 0)leftMax++;}for(int i = mid + 1;i < n;i++) {if(num.get(i).position < 0)rightMin++;else if(num.get(i).position > 0)rightMax++;}for(int i = 0;i < mid;i++) {if(judge > 0 && rightMin > 0 && num.get(i).position > 0)count++;else if(judge < 0 && num.get(i).position > 0)count++;}for(int i = mid + 1;i < n;i++) {if(judge > 0 && num.get(i).position < 0)count++;else if(judge < 0 && leftMax > 0 && num.get(i).position < 0)count++;}}public static void main(String[] args) {Main test = new Main();Scanner in = new Scanner(System.in);n = in.nextInt();num = new ArrayList<point>();for(int i = 0;i < n;i++) {int a = in.nextInt();num.add(new point(a, i));}test.getResult();System.out.println(count);}
}
Java实现 蓝桥杯 历届试题 蚂蚁感冒相关推荐
- 蓝桥杯历届试题-蚂蚁感冒
题目描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有1只蚂 ...
- [蓝桥杯][历届试题]蚂蚁感冒(模拟全过程)
在线测试连接 ** 题目描述 ** 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬 ...
- [蓝桥杯][历届试题]蚂蚁感冒(模拟)
题目描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有1只蚂 ...
- [蓝桥杯][历届试题]蚂蚁感冒
http://www.dotcpp.com/oj/problem1454.html 题目描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1 ...
- 蓝桥杯历届试题——蚂蚁感冒(模拟)
1.题目描述 2.输入输出 3.输入输出样例 4.解题思路 首先对于本题,有一个更高层的抽象:题目中说到两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行.其实这就等同于两只蚂蚁互相路过继续沿杆方向前进, ...
- Java实现蓝桥杯历届试题兰顿蚂蚁
历届试题 兰顿蚂蚁 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其 ...
- 【Java】蓝桥杯历届试题 题解
历届试题 PREV-1 核桃的数量 历届试题 PREV-2 打印十字图 历届试题 PREV-3 带分数 历届试题 PREV-4 剪格子 历届试题 PREV-5 错误票据 历届试题 PREV-6 翻硬币 ...
- Java实现 蓝桥杯 历届试题 核桃的数量
历届试题 核桃的数量 时间限制:1.0s 内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的 ...
- Java实现 蓝桥杯 历届试题 带分数
问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...
最新文章
- WINDOWS SERVER 2003从入门到精通之配置DHCP服务器(上)
- new一个新对象的时候,各属性方法的操行顺序
- Android自定义泡泡效果 源码
- Q:一个经典的helloworld程序需要几个文件?
- Visual Studio 2008中常用快捷键
- 什么?你做的差异基因方法不合适?
- 1900页Python系列PPT分享六:面向对象程序设计(86页)
- ios 旋转屏幕试图切换_总结iOS App开发中控制屏幕旋转的几种方式
- Spark系列(三)SparkContext分析
- C/C++[codeup 1931]打印日期,一年的第n天是几月几号
- max3232ese_【MAX3232ESE+ PDF数据手册】_中文资料_引脚图及功能_(美信 Maxim Integrated)-采芯网...
- 链路追踪Skywalking保姆级安装教程
- 24小时改变你的人生 (1至12小时)很好的书,推荐大家有时间在网上看看。
- python勒索病毒代码_勒索病毒GandCrab-v5.04完整分析
- 硬盘分区表错误与解决办法
- 使用tushare获取美股月收盘价
- 洛谷-P1125-笨小猴
- web前端从学习到学废
- [BZOJ3054] Rainbow的信号(考虑位运算 + DP?)
- javascript面试题(javaScript面试题)