PAT 1029

感觉已经没啥心情用JAVA和PAT斗智斗勇了,会内存超限,是不是读进来就内存超限了?

二分做的方法有点bug,又写了一个merge sort的,想着百万数量级应该不会超时吧这都超时也太蛋疼了,结果居然内存爆了...

 1 import java.util.*;
 2 import java.io.*;
 3
 4 class FastReader{
 5     BufferedReader reader;
 6     StringTokenizer tokenizer;
 7
 8     public FastReader(InputStream stream){
 9         reader = new BufferedReader(new InputStreamReader(stream), 1 << 10);
10         tokenizer = null;
11     }
12
13     public String next(){
14         while (tokenizer == null || !tokenizer.hasMoreTokens()){
15             try{
16                 tokenizer = new StringTokenizer(reader.readLine());
17             } catch (Exception e){
18                 throw new RuntimeException(e);
19             }
20         }
21
22         return tokenizer.nextToken();
23     }
24
25     public long next_long(){
26         return Long.parseLong(next());
27     }
28
29     public int next_int(){
30         return Integer.parseInt(next());
31     }
32 }
33
34 public class Main{
35     static long[] seq_a;
36     static long[] seq_b;
37
38     public static void main(String[] args){
39         FastReader reader = new FastReader(System.in);
40         int N;
41
42         N = reader.next_int();
43         seq_a = new long[(int) N];
44         for (int i = 0; i < N; i++)
45             seq_a[i] = reader.next_long();
46
47         N = reader.next_int();
48         seq_b = new long[(int) N];
49         for (int i = 0; i < N; i++)
50             seq_b[i] = reader.next_long();
51
52         int total = seq_a.length + seq_b.length;
53         int target = ((total & 0x1) != 0) ? total / 2 + 1 : total / 2;
54
55         int pa = 0, pb = 0;
56         int cnt = 1;
57         while (cnt < target){
58             if (seq_a[pa] < seq_b[pb])
59                 pa++;
60             else
61                 pb++;
62
63             cnt++;
64         }
65
66         long ans = Math.min(seq_a[pa], seq_b[pb]);
67         System.out.println(ans);
68     }
69 }

PAT,想说爱你不容易... 既然这么不待见JAVA为什么还给JAVA这么严苛的条件,给C++倒是很宽嘛,不用二分做都能过的时间...

时间: 2025-01-15 09:08:40

PAT 1029的相关文章

PAT 1029. 旧键盘

PAT 1029. 旧键盘 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际被输入的文字.每段文字是不超过80个字符的串,由字母A-Z(包括大.小写).数字0-9.以及下划线"_"(代表空格)组成.题目保证2个字符串均非空. 输出格式: 按照发现顺序,在一行中输出坏掉的键.其中英文字母只输出大写,每个坏键只输出一次.题目保证至少有1个坏

PAT 1029. Median (25)

1029. Median (25) Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1={11, 12, 13, 14} is 12, and the median of S2={9, 10, 15, 16, 17} is 15. The median of two sequences is defi

PAT 1029. 旧键盘(20)

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际被输入的文字.每段文字是不超过80个字符的串,由字母A-Z(包括大.小写).数字0-9.以及下划线"_"(代表空格)组成.题目保证2个字符串均非空. 输出格式: 按照发现顺序,在一行中输出坏掉的键.其中英文字母只输出大写,每个坏键只输出一次.题目保证至少有1个坏键. 输入样例: 7_Thi

PAT 1029. Median

尼玛,数组偶数个数的时候取中位数是取中间两者中的前者,还tmd一直再算平均,卧槽 #include <iostream> #include <cstdio> #include <cstdlib> #include <vector> using namespace std; int min(int a, int b) { return a<b? a:b; } int main() { int na, nb; scanf("%d", &

PAT 1029 旧键盘 (字符串+散列)

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字.以及实际被输入的文字.每段文字是不超过 80 个字符的串,由字母 A-Z(包括大.小写).数字 0-9.以及下划线 _(代表空格)组成.题目保证 2 个字符串均非空. 输出格式: 按照发现顺序,在一行中输出坏掉的键.其中英文字母只输出大写,每个坏键只输出一次.题目保证至少有 1 个坏键. 输入样例: 7

PAT 乙级 1029 旧键盘(20) C++版

1029. 旧键盘(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际被输入的文字.每段文字是不超过80个字符的串,由字母A-Z(包括大.小写).数字0-9.以及下划线"_"(代表空格)组成.题目保

1029. Median (25)【排序】——PAT (Advanced Level) Practise

题目信息 1029. Median (25) 时间限制400 ms 内存限制65536 kB 代码长度限制16000 B Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1={11, 12, 13, 14} is 12, and the median of S2={9, 10, 15, 16, 17}

PAT Basic 1029

1029 旧键盘 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输入的文字.以及实际被输入的文字.每段文字是不超过80个字符的串,由字母A-Z(包括大.小写).数字0-9.以及下划线"_"(代表空格)组成.题目保证2个字符串均非空. 输出格式: 按照发现顺序,在一行中输出坏掉的键.其中英文字母只输出大写,每个坏键只输出一次.题目保证至少有1个坏键. 输入

PAT 甲级 1029 Median (25 分)(思维题,找两个队列的中位数,没想到)*

1029 Median (25 分) Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1 = { 11, 12, 13, 14 } is 12, and the median of S2 = { 9, 10, 15, 16, 17 } is 15. The median of two sequence