7.1号笔试的,我今天7.4才总结。。。
 问题很多,主要还是太久没有用ACM模式,导致自己很被动。其次是脑袋太僵化,有点太紧张了,很多其实动一下脑子就出来了的。
 笔试模式是选择+编程
 编程一共三道题
 怎么说呢,都见过,都不难,但就不是能很快的ac。。。。还是不太熟练
 先解决acm模式的问题。
1.ACM模式的输入输出
A.多组空格分割的两个正整数
输入:
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。
输出描述:
输出a+b的结果
输入例子:
1 5
10 20
输出例子:
6
30
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(a + b);
        }
    }
}
B.第一行组数接空格分隔的两个正整数
输入
输入第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)输出
输出a+b的结果
例子:
2
1 5
10 20
输出
6
30
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        for(int i = 0; i < num; i++) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(a + b);
        }
    }
}
C.空格分隔的两个正整数为0 0 结束
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入
输出a+b的结果
输入:
1 5
10 20
0 0
输出
6
30
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int b = in.nextInt();
            if(a ==0 && b == 0) break;
            System.out.println(a + b);
        }
    }
}
D.每行第一个为个数后带空格分割整数为0结束
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。每组数据输出求和的结果
输入
4 1 2 3 4
5 1 2 3 4 5
0
输出
10
15
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            if(n == 0) break;
            int sum = 0;
            for (int i = 0; i < n; i++) {
                sum += in.nextInt();
            }
            System.out.println(sum);
        }
    }
}
字符串系列
H.第一行个数第二行字符串
输入
输入有两行,第一行n
第二行是n个空格隔开的字符串
输出
输出一行排序后的字符串,空格隔开,无结尾空格
输入例子
5
c d a bb e
输出例子
a bb c d e
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        while (in.hasNext()) { // 注意 while 处理多个 case
            String[] s = in.nextLine().split(" ");
            Arrays.sort(s);
            for (int i = 0; i < s.length; i++) {
                System.out.print(s[i] + " ");
            }
            
        }
    }
}
懒得总结了 直接上别人的总结
 别人的总结
 第二个总结
第一题 平均值最大的连续子段
输入5
2 2 2 2 2
输出 2
思路:
 一开始总是去想滑动窗口去了
 但其实 这个题 先排序 完后直接输出最大值就行了
 烦
这里就写一个acm的这个
 int n = sc.nextInt();
 int[] nums = new int[n];
 for(int i=0;i<nums.length;i++){
 nums[i] = sc.nextInt();
 }
或者用nextLine读取 但要注意 用Line的时候 前面要再加一遍Line
第二题
吃糖问题,一共有n个糖果,第i个糖果的甜度为ni 甜度值总和不能超过k
 问最多能吃几个糖果
笨啊!!!
 sort之后 从小的开始
第三题 标签匹配
public static void main(String[] args) {
    //System.out.println("YES");
    Deque<String > st=new LinkedList<>();
    Scanner in=new Scanner(System.in);
    String preS = in.nextLine();
    StringBuilder sb=new StringBuilder();
    for (char c : preS.toCharArray()) {
        if(c=='<'){
            sb.append(" ");
        }
        sb.append(c);
        if(c=='>'){
            sb.append(" ");
        }
    }
    boolean flag=true;
    String[] ss = sb.toString().split(" ");
    List<String > temp=new LinkedList<>();
//以上是对字符串的预处理,将字符串划分为三种类型:第一种<abc>   第二种 </abc>    第三种 非第一种和第二种
  for (String s : ss) {
        if(s.equals("")){
            continue;
        }
        temp.add(s);
    }
    ss=temp.toArray(new String[0]);
    for (String s : ss) {
        if(!s.matches("</[a-z]+>")){
        //    System.out.println(s);
            st.push(s);
        }
        if(s.matches("</[a-z]+>")){
            if(st.isEmpty()){
                flag=false;
                break;
            }
            String pop = st.pop();
            if(!pop.matches("<[a-z]+>")){
                if(st.isEmpty()){
                    flag=false;
                    break;
                }
                pop=st.pop();
            }
            if(!pop.substring(1,pop.length()-1).
                    equals(s.substring(2,s.length()-1))){
                flag=false;
                break;
            }
        }
    }
    if(!st.isEmpty()){
        flag=false;
    }
    System.out.println(flag?"YES":"NO");
}
