蓝桥杯省赛夺奖冲刺营内置模板

蓝桥杯省赛夺奖冲刺营内置模板

「快递分拣」

题目描述
蓝桥王国的每个快递都包含两个参数:1.快递单号 2.快递城市。

小李是蓝桥王国的一名快递员,每天的快递分拣让他苦不堪言。

于是他想要你帮他设计一个程序用于快递的分拣(将不同快递按城市信息分开)。

输入描述
输入第一行包含一个整数 N,表示快递的个数。

接下来第 2 ~ N+1 行每行包含一个字符串 S 和一个字符串 P,分别快递单号以及快递对应的城市。

1≤N≤10^3 ,保证数据量不超过 10^6

输出描述
输出共若干行。按城市的输入顺序依次输出城市的名称以及城市的快递个数,以及该城市的所有快递单号(单号按照输入顺序排序)。

输入输出样例
示例
输入

10 
10124214 北京
12421565  上海
sdafasdg213 天津
fasdfga124 北京
145252  上海
235wtdfsg 济南
3242356fgdfsg 成都
23423 武汉  
23423565f 沈阳
1245dfwfs 成都

输出

北京 2
10124214
fasdfga124
上海 2
12421565
145252
天津 1
sdafasdg213
济南 1
235wtdfsg
成都 2
3242356fgdfsg 
1245dfwfs 
武汉 1
23423
沈阳 1
23423565f 

运行限制
最大运行时间:1s
最大运行内存: 256M

import java.util.Scanner;
import java.util.Vector;

public class Main {
	static Vector<String> city=new Vector<String>();
	static Vector<Vector<String>> pack=new Vector<Vector<String>>();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		String number;
		String addr;
		while(n-->0) {
			number=sc.next();
			addr=sc.next();
			int index=findCity(addr);//该城市对应位置
			if(index!=-1) {//已有
				pack.get(index).add(number);
			}else {
				city.add(addr);//先添加此城市
				pack.add(new Vector<String>());//添加此城市快递队列
				pack.get(pack.size()-1).add(number);//将此快递单号添加进对应城市
			}
		}
		for (int i = 0; i < city.size(); i++) {
			System.out.println(city.get(i)+" "+pack.get(i).size());
			for (int j = 0; j < pack.get(i).size(); j++) {
				System.out.println(pack.get(i).get(j));
			}
		}
    }
	private static int findCity(String addr) {
		for (int i = 0; i < city.size(); i++) {
			if(city.get(i).equals(addr)) {
				return i;
			}
		}
		return -1;
	}
}

「CLZ 的银行」

题目描述
CLZ 银行只有两个接待窗口,VIP 窗口和普通窗口,VIP 用户进入 VIP 窗口排队,剩下的进入普通窗口排队。现有 M 次操作,操作有四种类型,如下:

IN name V:表示一名叫 name 的用户到 VIP 窗口排队
OUT V:表示 VIP窗口队头的用户离开排队
IN name N:表示一名叫 name 的用户到普通窗口排队
OUT N:表示普通窗口队头的用户离开排队
求 M次操作结束后 VIP 窗口队列和普通窗口队列中的姓名。

输入描述
第一行是一个整数 M(1

第二行到第 M+1行输入操作,格式如下:

IN name V
OUT V
IN name N
OUT N
输出描述
输出 M 次操作后 VIP 窗口队列和普通窗口队列中的姓名(从头到尾),先输出 VIP 窗口队列后输出普通窗口队列。

输入输出样例
示例 1
输入

5
IN xiaoming N
IN Adel V
IN laozhao N
OUT N
IN CLZ V

输出

Adel
CLZ
laozhao

运行限制
最大运行时间:1s
最大运行内存: 128M

代码

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {
	static 	Queue<String> vip=new LinkedList<String>();
	static 	Queue<String> normal=new LinkedList<String>();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		String op,name,kind;
		while(n-->0) {
			op=sc.next();//操作符
			if(op.equals("IN")) {
				name=sc.next();
				kind=sc.next();
				in(name,kind);
			}else {
				kind=sc.next();
				out(kind);
			}
		}
		while (vip.size()>0) {
			System.out.println(vip.remove());
		}
		while (normal.size()>0) {
			System.out.println(normal.remove());
		}
		
	}
	private static void out(String kind) {
		if(kind.equals("V")) {
			vip.remove();
		}else {
			normal.remove();
		}
	}
	private static void in(String name, String kind) {
		if(kind.equals("V")) {
			vip.add(name);
		}else {
			normal.add(name);
		}
	}
}

「弗里石的的语言」

题目描述
小发明家弗里想创造一种新的语言,众所周知,发明一门语言是非常困难的,首先你就要克服一个困难就是,有大量的单词需要处理,现在弗里求助你帮他写一款程序,判断是否出现重复的两个单词。

输入描述
第 1 行,输入 N,代表共计创造了多少个单词。

第 2行至第 N+1 行,输入 N个单词。

1≤N≤10^4 ,保证字符串的总输入量不超过 10^6。

输出描述
输出仅一行。若有重复的单词,就输出重复单词,没有重复单词,就输出 NO,多个重复单词输出最先出现的。

输入输出样例
示例1
输入

6
1fagas 
dsafa32j
lkiuopybncv
hfgdjytr
cncxfg
sdhrest

输出

NO

示例2
输入

5
sdfggfds
fgsdhsdf
dsfhsdhr
sdfhdfh
sdfggfds

输出

sdfggfds

运行限制
最大运行时间:3s
最大运行内存: 512M

代码

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
	static 	Map<String, Integer> map=new HashMap<String, Integer>();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		String word;
		boolean flag=false;
		while(n-->0) {
			word=sc.next();
			if(map.get(word)==null) {
				map.put(word, 1);
			}else{
				System.out.println(word);
				flag=true;
				break;
			}
		}
		if(!flag) {
			System.out.println("NO");
		}
	}
}

你可能感兴趣的:(13届蓝桥杯夺奖冲刺营,蓝桥杯,java,算法)