zl程序教程

您现在的位置是:首页 >  其他

当前栏目

蓝桥算法训练__普及组.Day1

训练算法 蓝桥 __ 普及 Day1
2023-09-27 14:19:44 时间

第一题:P2694 接金币 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn

package 蓝桥算法训练__普及组.Day1;

import java.util.*;

/**
 * @author snippet
 * @date 2023-02-05
 * P2694 接金币 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
 */

/**
 * 这个类用来存储坐标位置
 * 同时重写比较方法 来排序坐标(从低到高)
 */
class Numbers implements Comparable<Numbers> {
    int x;
    int y;
    Numbers(int x, int y) {
        this.x = x;
        this.y = y;
    }
    @Override
    public int compareTo(Numbers o) {
        return this.y - o.y;
    }
}

public class T1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int G = sc.nextInt();
        while (G-- > 0) {
            int N = sc.nextInt();
            boolean flag = true;
            List<Numbers> list = new ArrayList<>();
            for (int i = 0; i < N; i++) {
                int x = sc.nextInt();
                int y = sc.nextInt();
                Numbers Number = new Numbers(x, y);
                list.add(Number);
            }
            //排序
            Collections.sort(list);
            // 这个坐标为起始坐标 也是 经过的坐标
            int x1 = 0;
            int y1 = 0;
            for (int i = 0; i < N; i++) {
                int x2 = list.get(i).x;
                int y2 = list.get(i).y;
                if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {
                    flag = false;
                    break;
                }
                x1 = x2;
                y1 = y2;
            }
            if (flag) {
                System.out.println("Abletocatch");
            } else {
                System.out.println("Notabletocatch");
            }
        }
    }
}

第二题:P1372 又是毕业季I - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

package 蓝桥算法训练__普及组.Day1;

import java.util.Scanner;

/**
 * @author snippet
 * @date 2023-02-05
 * P1372 又是毕业季I - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
 */

public class T2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        System.out.println(n/k);
    }
}

第三题:P1106 删数问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

package 蓝桥算法训练__普及组.Day1;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author snippet
 * @date 2023-02-05
 * P1106 删数问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
 */

public class T3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int k = sc.nextInt();
        char[] c = str.toCharArray();
        List<Character> list = new ArrayList<>();

        for (int i = 0; i < c.length; i++) {
            list.add(c[i]);
        }

        int len = list.size();

        // 数据删除
        for (int i = 0; i < k; i++) {
            for (int j = 0; j < list.size()-1; j++) {
                if (list.get(j) > list.get(j+1)) {
                    list.remove(j);
                    break;
                }
            }
        }

        // 如果实际删除的数据少于需要删除的数据 则取前面几位输出
        if (len < list.size() + k) {
            for (int i = 0; i < len-k; i++) {
                System.out.print(list.get(i));
            }
            return;
        }

        // 去除前导零
        // 当集合中只有一个数据或者首位不为0时跳出循环
        while (true) {
            if (list.size() == 1) {
                break;
            }
            if (list.get(0) == '0') {
                list.remove(0);
            } else {
                break;
            }
        }

        // 答案输出
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i));
        }
    }
}

第四题:谈判 - 蓝桥云课 (lanqiao.cn)

package 蓝桥算法训练__普及组.Day1;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author snippet
 * @date 2023-02-05
 * 谈判 - 蓝桥云课 (lanqiao.cn)
 */
// 求最小,就直接贪心
// 先将数据进行排序
// 从最小的开始加起 (1 + 3) + (1+3 + 5) + (1+3+5 + 9) = 31
public class T4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }
        Arrays.sort(a);
        int ans = 0;
        int cnt = a[0];
        for (int i = 1; i < n; i++) {
            cnt += a[i];
            ans += cnt;
        }
        System.out.println(ans);
    }
}