Java实现分割矩形
给定平面内平行于坐标轴的一个矩形,从矩形内选
择一些点,从这些点向右和向上各射出一条射线,
请问:这些射线将矩形分成了多少份。
数据格式:
输入的第一行包含两个整数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实现分割矩形的更多相关文章
- java集合分割
java集合分割成等份的小集合: private <T> List<List<T>> getSubList(List list,int len) { if(list ...
- java 竖线分割字符串的问题
java 竖线分割字符串的问题 例1: String[] paraStr = "6010;320100;A".split(";"); System.out.pr ...
- Java中分割字符串
java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 p ...
- Java StringTokenizer分割字符串
除了String本身的split方法,JDK在很早就提供了StringTokenizer这个类来分割字符串: 不过,由于正则表达式和String本身的功能越来越多,StringTokenizer已经被 ...
- Java字符串分割
java中字符串的分割函数,split("你想要分割的字符", 你想要最多分割为多少段,正整数) 注意事项: 1.分割特殊字符考虑转义字符的使用.如: . \ | 2.第二个参数: ...
- Java字符串分割(转)
java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 p ...
- java字符串分割的小练习
最近看到一个网友的一个小问题,有关字符串分割的,思考了一下,后面给出代码:碰到一个java字符串判断结尾的问题,发现与c\c++以"\0"判断字符串结尾不同的是,java中字符串是 ...
- 1.Java 字符分割
使用方法 性能比较 使用方法 或|,点.,加+,乘*,在字符串中出现时,如果这个字符串需要被split,则split时候,需要在前面加两个反斜杠. 与&,在split时候,不需要转义. 一.j ...
- java文件分割及合并
分割设置好分割数量,根据源文件大小来把数据散到子文件中代码如下; package word; import java.io.File; import java.io.FileInputStream; ...
随机推荐
- 比AtomicLong更优秀的LongAdder确定不来了解一下吗?
前言 思维导图.png 文章中所有高清无码图片在公众号号回复: 图片666 即可查阅, 可直接关注公众号:壹枝花算不算浪漫 最近阿里巴巴发布了Java开发手册(泰山版) (公众号回复: 开发手册 可收 ...
- Java中this()和super()
Java关键字this只能用于方法体中.this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的th ...
- MySQL事务操作
在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作.因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION ...
- Django之ORM属性类型和约束条件
ORM属性类型: 1. CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该 ...
- mysql 查询获取排名的方法(绝对有效)
http://blog.csdn.net/k8080880/article/details/11253305 select case when pid=0 then case when @prevTy ...
- 请求地址中出现中文或者URL作为参数,为避免含有特殊字符截断URL,需要编码
URL中担心出现特殊符号!*'();:@&=+$,/?%#[] 从而截断完整的URL,需要对URL编码,服务端对URL再解码 参考: https://blog.csdn.net/aaaaazq ...
- 学习ASP.NET Core(08)-过滤搜索与分页排序
上一篇我们介绍了AOP的基本概览,并使用动态代理的方式添加了服务日志:本章我们将介绍过滤与搜索.分页与排序并添加对应的功能 注:本章内容大多是基于solenovex的使用 ASP.NET Core 3 ...
- html常用字体
例1(小米米官网):font-family: "Arial","Microsoft YaHei","黑体","宋体",s ...
- vue 上拉刷新组件
背景,项目中经常会出现需要上拉加载更多或者下拉刷新的需求,一直以来呢都是借用各种UI库来实现,但是不知道啥情况,最近在使用的时候,一直有问题,出不了效果,然人很恼火,于是只能自己动手来实现以下, 这次 ...
- [json-server] RESTful API 中,取主数据时,同时获取多个关联子表的数据
项目背景: back-end:ASP.NET Core WebAPI front-end:Vue(+vue-router +vuex +axios)(webpack)(json-server + mo ...