import java.util.Arrays;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap; public class Main {
private static Scanner cin;
private static int m;
private static int n;
private static int k;
private static int l;
private static int d;
public static void main(String args[]) throws Exception {
cin = new Scanner(System.in);
String t = cin.nextLine();
String[] v = t.split(" ");
m = Integer.valueOf(v[0]);
n = Integer.valueOf(v[1]);
k = Integer.valueOf(v[2]);
l = Integer.valueOf(v[3]);
d = Integer.valueOf(v[4]); int x,y,p,q;
TreeMap<Spliter,Integer> tmK = new TreeMap<>();
TreeMap<Spliter,Integer> tmL = new TreeMap<>();
for(int i=0;i<d;i++) {
t = cin.nextLine();
v = t.split(" ");
x = Integer.valueOf(v[0]);
y = Integer.valueOf(v[1]);
p = Integer.valueOf(v[2]);
q = Integer.valueOf(v[3]);
//the same column, x is the same, spliter is L
if(x == p) {
Spliter s = new Spliter((y+q)/2);
if(tmL.containsKey(s)) {
int count = tmL.get(s);
tmL.replace(s, new Integer(count+1));
}else {
tmL.put(s, 1);
}
}
//the same row, y is the same ,spliter is K
else if(y == q) {
Spliter s = new Spliter((x+p)/2);
if(tmK.containsKey(s)) {
int count = tmK.get(s);
tmK.put(s, new Integer(count+1));
}else {
tmK.put(s, 1);
}
}
} SpliterCount[] scK = new SpliterCount[tmK.size()];
SpliterCount[] scL = new SpliterCount[tmL.size()];
Entry<Spliter,Integer> e;
int[] karray = new int[k];
int[] larray = new int[l];
for(int i=0,size=tmK.size();i<size;i++) {
e = tmK.pollFirstEntry();
SpliterCount sct = new SpliterCount(e.getKey(),e.getValue());
scK[i] = sct;
}
Arrays.sort(scK); for(int i=0;i<k;i++) {
karray[i] = scK[scK.length-i-1].getSpliter().getSpliterLine();
}
Arrays.sort(karray); for(int i=0,size=tmL.size();i<size;i++) {
e = tmL.pollFirstEntry();
SpliterCount sct = new SpliterCount(e.getKey(),e.getValue());
scL[i] = sct;
}
Arrays.sort(scL);
for(int i=0;i<l;i++) {
larray[i] = scL[scL.length-i-1].getSpliter().getSpliterLine();
}
Arrays.sort(larray); String ts = Arrays.toString(karray);
System.out.println(ts.substring(1, ts.length()-1).replace(",", ""));
ts = Arrays.toString(larray);
System.out.println(ts.substring(1, ts.length()-1).replace(",", ""));
}
} class Spliter implements Comparable{
Integer spliterLine;
public Spliter(Integer aspliterLine) {
spliterLine = aspliterLine;
} public Integer getSpliterLine() {
return spliterLine;
} public int compareTo(Object arg0) {
Spliter s = (Spliter)arg0;
return spliterLine.compareTo(s.getSpliterLine());
} public String toString() {
return String.format("spliterLine:%d,", spliterLine);
}
} class SpliterCount implements Comparable{
Spliter spliter;
Integer count;
public SpliterCount(Spliter s, Integer c) {
spliter = s;
count = c;
} public int compareTo(Object arg0) {
SpliterCount sc = (SpliterCount)arg0;
Spliter s2 = sc.getSpliter();
Integer c2 = sc.getCount();
if(spliter == s2 && count == c2) {
return 0;
}else if(count == c2) {
return - spliter.compareTo(s2);
}else {
return count.compareTo(c2);
}
} public Spliter getSpliter() {
return spliter;
}
public Integer getCount() {
return count;
}
public String toString() {
return String.format("spliter:%s count=%d", spliter.toString(),count);
}
}

java实现 洛谷 P1056 排座椅的更多相关文章

  1. 洛谷P1056 排座椅

    洛谷P1056 排座椅 洛谷传送门 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有 ...

  2. 洛谷 P1056 排座椅

    P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上 ...

  3. 洛谷 P1056 排座椅 题解

    P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 \(D\ ...

  4. 洛谷 P1056 排座椅 桶排序

    桶排序大法好! 每次一看到这种范围小的题,本萌新就想用桶排. 因为题目中的m,n都小于1000,我们就可以定义两个1000的数组,表示每一行或每一列可以隔开几对讲话的童鞋. 然后再定义两个1000的数 ...

  5. 洛谷 P1056 排座椅【贪心/结构体排序】

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...

  6. 洛谷——P1056 排座椅

    https://www.luogu.org/problem/show?pid=1056#sub 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主 ...

  7. 洛谷P1056——排座椅(模拟,贪心,排序)

    https://www.luogu.org/problem/show?pid=1056 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发 ...

  8. 洛谷 U86564 排队形

    洛谷 U86564 排队形 题目传送门 题目背景 \(JDFZ2019\)秋季运动会开始辣!为了使强大的高一 · \(6\)班有一个更好的精神面貌,班主任\(T\)老师和体委\(LY\),\(LYB\ ...

  9. Java实现 洛谷 P1738 洛谷的文件夹

    题目描述 kkksc03是个非凡的空想家!在短时间内他设想了大量网页,然后总是交给可怜的lzn去实现. 洛谷的网页端,有很多文件夹,文件夹还套着文件夹. 例如:/luogu/application/c ...

随机推荐

  1. Vue2.0 + ElementUI 手写权限管理系统后台模板(一)——简述

    挤一下: 一开始以为没有多少人用就没建群,但是加我的人太多了,好多问题都是重复的,所以建个群大家互相沟通交流方便点,但是建的有点晚,错过了好多人所以群里人有点少,QQ群: 157216616 小提示 ...

  2. HDU 2013 (水)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2013 题目大意:已知最后一天桃子只有一个,告诉你猴崽子第一天吃掉总桃子数的一半多一个,第二天吃掉剩下总 ...

  3. Linux --常见Linux目录名称

    Linux文件系统结构是从Unix文件结构演进过来的,在Linux文件系统中,通用的文件系统中,通用的目录名用于表示一些常见的功能.如下所示: 目录 用途 / 虚拟目录的根目录,通常不会再这里存储文件 ...

  4. Python --表达式和运算符

    表达式 由一个或者几个数字或者变量和运算符组合成的一行代码 通常会返回一个结果 运算符 由一个以上的值经过变化得到新值的过程就叫做运算 用于运算的符号称为运算符 运算符的分类: 算数运算符 比较或者关 ...

  5. 1026 Table Tennis (30分) 难度不高 + 逻辑复杂 +细节繁琐

    题目 A table tennis club has N tables available to the public. The tables are numbered from 1 to N. Fo ...

  6. vue 路由钩子。

    一.全局钩子 你可以使用 router.beforeEach 注册一个全局的 before 钩子: const router = new VueRouter({ ... }) router.befor ...

  7. JS 面向对象封装 无限轮播 插件。

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. 最简单的git 用法

    步骤 在机器上ssh-keygen 然后把id_rsa.pub 复制到csdn 的公钥上去. git clone git@code.csdn.net:aca_jingru/zabbix.git 如果这 ...

  9. Spark_Streaming整合Kafka

    Spark Streaming 整合 Kafka ​ 一.版本说明二.项目依赖三.整合Kafka        3.1 ConsumerRecord        3.2 生产者属性        3 ...

  10. 系列13 docker asp.net core部署

    一.介绍   本篇完整介绍asp.net core web api如何部署到docker容器中,并通过外部访问web api服务.在编写完成dockerfile之后,可以通过docker [image ...