Time Limit: 1000 ms Memory Limit: 131072 KiB
Problem Description
临近11.11,C~K看见周围的朋友一个个的都脱单或者正准备脱单了,C~K也想要找一个女朋友了(听说国家会分配?)。MeiK听说了这件事情,表
示C~K终于开悟了,所以他整理了一份候选人名单给C~K。可是C~K心里有自己心动女生的身高区间和年龄限制,所以他想把符合条件的女生
的信息给筛选出来,但是这可是难住了C~K,事关C~K的幸福,你能帮帮他吗?
ps:由于MeiK比较傻,所以名单里可能会有重复的女生的信息,若信息重复,则第一次输入为有效信息。
Input
多组输入。
第一行输入MeiK的候选人名单里有N个人(N<100000)。
第二行输入四个整数a,b,c,d。分别表示C~K心动女生的身高的最小值和最大值,年龄的最小值和最大值。(题目保证a<=b,c<=d)
接下来输入N行,每行表示一个女生的信息(姓名,身高,年龄,联系方式)
ps:联系方式不超过11个字符。
Output
对于每一组输入,第一行输出一个n,表示符合条件的女生的数量。
接下来的n行,每一行输出一个符合条件的女生的信息。
输出顺序按身高从低到高排序,若身高相同,则按年龄从高到底排序,若年龄也相同,则按照输入顺序输出。
Sample Input
4
160 170 20 22
女神1 161 19 11111
女神2 167 20 22222
女神2 167 20 22222
女神3 163 21 33333
Sample Output
2
女神3 163 21 33333
女神2 167 20 22222
Hint
Source
C~K
SDUTACM运维技术中心
import java.util.*;
class girls{
int height, age;
static int a, b, c, d;
String name;
String sa[];
girls(String name){
this.name = name;
sa = name.split(" ");
height = Integer.parseInt(sa[1]);
age = Integer.parseInt(sa[2]);
}
boolean judge() {
if(height >=a && height <= b && age >= c && age <= d) {
return true;
}
return false;
}
}
public class Main {
public static void main(String[] args) throws Exception {
Scanner ss = new Scanner(System.in);
while(ss.hasNext()) {
int a, b, c, d, n;
ArrayList<girls> s = new ArrayList<girls>();
LinkedList<String> sn = new LinkedList<String>();
n = ss.nextInt();
a = ss.nextInt();
b = ss.nextInt();
c = ss.nextInt();
d = ss.nextInt();
girls.a = a;
girls.b = b;
girls.c = c;
girls.d = d;
String str;
//把正数后面的换行读入
str = ss.nextLine();
for(int i = 0; i < n; i++) {
str = ss.nextLine();
girls p = new girls(str);
if(!sn.contains(str) && p.judge()) {
s.add(p);
sn.add(str);
}
}
Collections.sort(s, new Comparator<girls>() {
//重写比较函数
public int compare(girls a, girls b) {
if(a.height == b.height)
return 0;
//返回负数置换数据
return a.height - b.height;
}
});
System.out.println(s.size());
//方法一,使用get()方法
/*for(int i = 0; i < s.size(); i++) {
System.out.println(s.get(i).name);
}*/
//方法二,使用迭代器
Iterator<girls>it = s.iterator();
while(it.hasNext()) {
girls tp = it.next();
System.out.println(tp.name);
}
}
ss.close();
}
}

本文介绍了一个基于特定条件筛选女生信息的算法实现。该算法通过Java编程语言实现了对候选人名单中符合身高和年龄要求的女生信息进行筛选,并按照指定规则进行排序输出。

被折叠的 条评论
为什么被折叠?



