给定平面内平行于坐标轴的一个矩形,从矩形内选

择一些点,从这些点向右和向上各射出一条射线,

请问:这些射线将矩形分成了多少份。

数据格式:

输入的第一行包含两个整数x, y,表示矩形是由(0,

0), (x, 0), (x, y), (0, y)四个点围成的。

第二行包含一个整数n,表示矩形内的点的数量。

接下来n行,每个两个整数xi, yi,表示矩形内的一

个点。输入保证所有的点都在矩形内部而且没有两

个点有相同的横坐标或纵坐标。

输出一个整数,表示从给定的点射出的射线将矩形

分成的份数。

例如,输入:

10 10

3

1 3

3 1

2 4

程序应该输出:

6

【数据规模和约定】

对于10%的数据,1<=n<=10,1<=x, y<=100;

对于30%的数据,1<=n<=1000,

1<=x,y<=1000;

对于60%的数据,1<=n<=10000,

1<=x,y<=1000000;

对于100%的数据,1<=n<=100000,

1<=x,y<=1000000000,1<xi<x,1<yi<y。

资源约定:

峰值内存消耗(含虚拟机) < 256M

CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“

请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝

提交该源码。

注意:不要使用package语句。不要使用jdk1.7及

以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码

处理。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner; public class Main {
public static long x, y;
public static int n;
public static Point[] P;
public static long count = 1;
public static ArrayList<Integer> list = new ArrayList<Integer>(); class MyComparator implements Comparator<Point> { public int compare(Point arg0, Point arg1) {
if(arg0.x > arg1.x)
return 1;
else if(arg0.x < arg1.x)
return -1;
else if(arg0.x == arg1.x) {
if(arg0.y > arg0.y)
return 1;
else if(arg0.y < arg0.y)
return -1;
else
return 0;
}
return 0;
} } static class Point {
public int x;
public int y; public Point(int x, int y) {
this.x = x;
this.y = y;
}
} public void getResult() {
Arrays.sort(P, new MyComparator());
list.add(P[n - 1].y);
count++;
for(int i = n - 2;i >= 0;i--) {
if(P[i].x == P[i + 1].x) {
if(P[i + 1].y > P[i].y) {
int j = list.indexOf(P[i + 1].y);
list.remove(j);
list.add(P[i].y);
}
count++;
}
else {
Collections.sort(list);
int j = 0;
for(;j < list.size();j++)
if(list.get(j) >= P[i].y)
break;
count = count + j + 1;
if(!list.contains(P[i].y))
list.add(P[i].y);
}
}
System.out.println(count);
} public static void main(String[] args) {
Main test = new Main();
Scanner in = new Scanner(System.in);
x = in.nextLong();
y = in.nextLong();
n = in.nextInt();
P = new Point[n];
for(int i = 0;i < n;i++) {
int x = in.nextInt();
int y = in.nextInt();
P[i] = new Point(x, y);
}
test.getResult();
}
}

Java实现分割矩形的更多相关文章

  1. java集合分割

    java集合分割成等份的小集合: private <T> List<List<T>> getSubList(List list,int len) { if(list ...

  2. java 竖线分割字符串的问题

    java 竖线分割字符串的问题 例1: String[] paraStr = "6010;320100;A".split(";"); System.out.pr ...

  3. Java中分割字符串

    java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 p ...

  4. Java StringTokenizer分割字符串

    除了String本身的split方法,JDK在很早就提供了StringTokenizer这个类来分割字符串: 不过,由于正则表达式和String本身的功能越来越多,StringTokenizer已经被 ...

  5. Java字符串分割

    java中字符串的分割函数,split("你想要分割的字符", 你想要最多分割为多少段,正整数) 注意事项: 1.分割特殊字符考虑转义字符的使用.如: . \ | 2.第二个参数: ...

  6. Java字符串分割(转)

    java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 p ...

  7. java字符串分割的小练习

    最近看到一个网友的一个小问题,有关字符串分割的,思考了一下,后面给出代码:碰到一个java字符串判断结尾的问题,发现与c\c++以"\0"判断字符串结尾不同的是,java中字符串是 ...

  8. 1.Java 字符分割

    使用方法 性能比较 使用方法 或|,点.,加+,乘*,在字符串中出现时,如果这个字符串需要被split,则split时候,需要在前面加两个反斜杠. 与&,在split时候,不需要转义. 一.j ...

  9. java文件分割及合并

    分割设置好分割数量,根据源文件大小来把数据散到子文件中代码如下; package word; import java.io.File; import java.io.FileInputStream; ...

随机推荐

  1. 关于日常操作中sql的性能

    最近接手了一个项目.使用的数据库是sql server,但是遇到一些关于日期的查询的时候,查询结果非常慢.看了下别人的sql //sql = sql + " and CONVERT(nvar ...

  2. angular js 分页

    一.编写实体类PageResult public class PageResult implements Serializable { private Long total;//总记录数 privat ...

  3. 虚拟机安装 Linux 最完整攻略

    工作中如果你是Linux运维,或者程序员,一定经常需要一个Linux的环境来让你折腾.这个时候使用虚拟机对我们来说是一个不错的选择. 虚拟化技术目前主要有两种:一.原生架构,这种虚拟机产品直接安装在计 ...

  4. Flutter仿掘金点赞效果

    老孟导读:今天分享一下如何实现掘金点赞效果,这不仅仅是一篇技术文章,还是一篇解决问题思路的文章,遇到一个需求时,如何拆分需求,然后一步一步实现,这个过程比单纯的技术(此文)更有含金量. 先来看一下掘金 ...

  5. HTML标签和属性二

    五.文本标记 7.文本样式 <b></b>  <strong></strong> 加粗 <i></i>   <em> ...

  6. ReactNavigation中如何实现页面跳转

    一.ReactNavigation中如何实现页面跳转 因为每个屏幕组件(具有路由地址的组件)都是由App根组件自动创建并挂载的,App组件 在创建屏幕组件时,会自动传递进来一个props:   nav ...

  7. Django之请求生命周期

    settings.py中间件执行 自定义中间件的配置: (1)任意新建一个py文件,导入模块from django.utils.deprecation import MiddlewareMixin ( ...

  8. 你以为只有马云会灌鸡汤?Linux 命令行也会!

    你以为只有马云会灌鸡汤?Linux 命令行也会! "Linux 太南了o(╥﹏╥)o","我累了不想奋斗了o(︶︿︶)o"... 不知道你有没有想过,在你快丧失 ...

  9. dom4j——使用dom4j生成xml

    使用org.dom4j.Element 创建xml /** * 生成Service.xml文件 * @param tran 交易对象 * @param filePath 文件夹路径 */ public ...

  10. uiautomator2通过wifi操作手机

    参考来源:https://www.cnblogs.com/c-x-a/p/11176066.html,有部分不适合当前版本的做了修改 1.手机通过USB连接电脑,先开启远程adb模式,操作如下(可以指 ...