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. Mysql 常用语句实战(3)

    前置 sql 语句 用来创建表.插入数据 ; DROP TABLE IF EXISTS dept_;-- 部门表 DROP TABLE IF EXISTS emp_;-- 部门表 ; SELECT @ ...

  2. 什么是HTTP

    什么是HTTP 什么是 HTTP ?你肯定立马跳出:"HTTP 是超文本传输协议,就是 HyperText Transfer Protocol". 这样回答还是过于简单,那到底什么 ...

  3. 微信小程序开发实战(1):使用滚动视图

    本文主要介绍了滚动视图组件(scroll-view)的各种常用功能,例如,垂直和水平滚动.滚动事件等,并通过例子代码来演示这些功能的使用方法.   1. 垂直滚动视图 scroll-view是容器组件 ...

  4. 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场

    上一篇文章(https://www.cnblogs.com/meowv/p/12896898.html)已经成功将博客项目跑起来了,那么本篇主要是将之前遗留的问题解决,现在的代码看起来可能还是比较混乱 ...

  5. flask之CORS跨域请求处理

    from flask import Flask from flask_cors import CORS#pip install Flask-CORS#跨域请求模块 app = Flask(__name ...

  6. 9.1 Go 反射

    9.1 Go 反射 反射:可以在运行时,动态获取变量的信息,比如变量的类型,类别 1.对于结构体变量,还可以获取到结构体的字段,方法 2.实现这个功能的是 reflect包 reflect.TypeO ...

  7. unity-消息的注册,监听,回调

    最近在空闲时间准备做个小游戏,先把一些基本框架搭建好,本次记录的是消息的注册,监听和回调等 其实这些就是基于C#的委托(delegate) 第一步:定义一些委托 namespace Common.Me ...

  8. [!] Unable to find a pod with name, author, summary, or description matching `AFNetworking`

    大量的答案是删除~/Library/Caches/CocoaPods/search_index.json  没有起作用 有用答案: https://blog.csdn.net/qq_35827461/ ...

  9. 用python selenium 单窗口单IP刷网站流量脚本

    近期有朋友说需要增加自己网站的流量,故用python写了一个简单的脚本,配合IP池或者动态IP都可以刷,当然最爽的是单窗口单IP. 说明 作弊可耻! 环境 python3.8 + selenium + ...

  10. Kubernetes Ingress简单入门

    作者:Nick Ramirez 原文链接:https://thenewstack.io/kubernetes-ingress-for-beginners/ 本文转载自Rancher Labs 不知道你 ...