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. Django使用channel实现websocket

    channel 什么是channel? channel是第三方工具包,对于不支持websocket协议的框架可以借助此包实现websocket 安装 终端安装: pip3 install channe ...

  2. node中几个路径的梳理

    大半夜睡不着... 今天用node写了返回客户端请求资源的http服务,确实发现了一些以前没注意到的问题. 第一个是在接收到请求的时候,解析完路径后,一定要判断请求的文件的后缀,以便选择对应的Cont ...

  3. 【Python代码】TSNE高维数据降维可视化工具 + python实现

    目录 1.概述 1.1 什么是TSNE 1.2 TSNE原理 1.2.1入门的原理介绍 1.2.2进阶的原理介绍 1.2.2.1 高维距离表示 1.2.2.2 低维相似度表示 1.2.2.3 惩罚函数 ...

  4. Go语言学习目录

    第一章 Go环境搭建 1.1 Linux搭建Go环境 1.2 Mac搭建Go环境 1.3 Windows搭建Go环境 第二章 Go语言特性 2.1 Go特征 2.2 Go变量类型 2.3 Go内置函数 ...

  5. H3C S5500三层交换机划分Vlan与H3C路由组网

    基本属性: vlan特性:三层互通,两层隔离.三层交换机不同vlan之间默认是互通的,两次交换机不同vlan是隔离的. vlan IP:就是定义一个vlan下所有机器的网关地址,该vlan下的机器网关 ...

  6. kudu_遇到的一些问题

                            最近在研究,自己搭建kudu遇到的一些问题,及解决方法,供大家参考. 1.java连接kudu,出现超时的问题,是因为kudu开启了认证模式: 通过查找 ...

  7. HDU6035 Colorful Tree

    题目链接:https://vjudge.net/problem/HDU-6035 题目大意: 多样例输入. 对于每一个样例,给出 n \((2 \le n \le 200000)\) 个结点的一棵树, ...

  8. UVa 11529

    题目大意:见刘汝佳<算法竞赛入门经典——训练指南>P173 解题思路: 先求出对于每一个点,有多少个三角形包含它,把各个点得到的数值加起来的总和除以 C[n][3] 即可得出答案.对于每一 ...

  9. ngnix随笔一

    nginx安装及启动 1.用yum源安装,首先配置yum源 在“/etc/yum.repo.d/”下创建yum源文件 例如:cd /etc/yum.repo.d/nginx.repo [nginx-s ...

  10. httpclient介绍与请求方式详解

    httpClient工具介绍 HTTP协议可能是现在lntemet上使用得最多.最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源.虽然在JDK的java.net包中已经 ...