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; ...
随机推荐
- Atcoder Beginner Contest 167
赛场实况: 训练反思: A题签到不说了,B题第一眼没看清楚数据范围,写了一堆然后仔细一看1e12果断不能暴力..立马换了一个写法,连交2发wa(细节啊细节!!),C题看了半天英语没看懂说了什么,拿翻译 ...
- Vue路由的hash模式与history模式的区别?
1.首先router有两种模式:hash模式(默认).history模式(需配置mode: 'history') hash和history的区别? hash ...
- MySQL用户、库、表(单/多)操作
用户及权限操作: 管理员登录:mysql -uroot -p 用户设置密码:set password=password(密码); 查看数据库所有用户:select * from mysql.user; ...
- Kafka架构原理
Kafka架构原理 最终大家会掌握 Kafka 中最重要的概念,分别是 Broker.Producer.Consumer.Consumer Group.Topic.Partition.Replica. ...
- CDH6 高版本hbase+solr实现二级索引
之前的环境是单独下载的CDH组件包搭建的集群,但是因为hadoop版本过低导致漏洞无法修复,重新搭建高版本集群环境. 新集群环境: 主要组件:hadoop,hbase,zookeeper,Key-Va ...
- BZOJ1080 暴力+位移运算符的用法
1080: [SCOI2008]劣质编码 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 337 Solved: 148[Submit][Status ...
- UVa 11529
题目大意:见刘汝佳<算法竞赛入门经典——训练指南>P173 解题思路: 先求出对于每一个点,有多少个三角形包含它,把各个点得到的数值加起来的总和除以 C[n][3] 即可得出答案.对于每一 ...
- LeetCode上的SQL练习
184. 部门工资最高的员工 SELECT D. NAME Department, E. NAME Employee, E.Salary FROM -- 内连接两张查询表 Employee E INN ...
- vue2.0+mint-ui 仿资讯类顶导航内容联动优化
<template><div><div class="navbox"><div class="nav" id=&quo ...
- 4 CSS文本属性
CSStext(文本)属性可定义文本外观,比如文本颜色,对齐文本,装饰文本,文本缩进,行间距等 4.1文本颜色 color属性用于定义文本颜色. div { color: red; } 颜色表示方法: ...