第十四届蓝桥杯大赛软件赛省赛Java大学B组

最近正在备考蓝桥杯,报的java b组,顺便更一下蓝桥的

幸运数字

题目

思路:填空题,暴力即可

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {

    static int trans(int x, int y){
      int res = 0;
      while(x > 0){
        res += x % y;                        // 不用求出转换后的数字,求和即可
        x /= y;                    
      }
      return res;
    }

    public static void main(String[] args) {
       int i = 0, j = 0;
       while(i < 2023){
         j++;
         if(j % trans(j, 2) == 0 && j % trans(j, 8) == 0 &&
          j % trans(j, 10) == 0 && j % trans(j, 16) == 0) i++;
       }
       System.out.println(j);
    }
}

数组分割

题目

思路:数学题。

1.加起来的总和为奇数时(有奇数个奇数)显然不可能完成分割.

2.全为偶数(n个偶数):S_{1}中0个元素:C_{n}^{0}S_{1}中1个元素:C_{n}^{1} ... 所以分法总数为

C_{n}^{0}+C_{n}^{1}+...+C_{n}^{n}=2^{n}(二项式定理,不证明了,想了解的可以网上查一下)。

3.偶数个奇数和偶数(2m个奇数,n个偶数):不妨将2m个奇数看成m个偶数计算,有C_{2m}^{0}+C_{2m}^{2}+...+C_{2m}^{2m}=2^{2m-1},而偶数的排法为2^{n}个,一共2^{n+2m-1},即2的偶数个数加奇数个数-1次方

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {

    static final int mod = (int)1e9 + 7;

    static int even = 0, odd = 0;

    static int fun(){    
      if(odd % 2 == 1) return 0;                // 奇数个奇数,无法排

      if(odd == 0) return quick_pow(2, even);   // 0个奇数,2^偶数个数

      return quick_pow(2, odd - 1 + even);      // 奇数个数加偶数个数减1
    }

    static int quick_pow(int a, int b){
      int res = 1;
      for(; b > 0; b >>= 1){
        if((b & 1) == 1) res = (int)((long)res * a % mod);
        a = (int)((long)a * a % mod);
      }
      return res;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int t = scan.nextInt();

        while(t-- > 0){
          int n = scan.nextInt();

          even = 0; odd = 0;
          for(int i = 0; i < n; i++) {
            int a = scan.nextInt();
            if(a % 2 == 1) odd ++;
            else even ++;
          }

          System.out.println(fun());
        }
        scan.close();
    }
}

矩形总面积

题目

思路:数学题

只要两个矩形有相交区域,一定满足

相交区域面积=(min(x2,x4)-max(x1,x3))*(min(y2,y4) - max(x1,x3)。

不会证明,但是是对的...(也许可以列出所有的情况证明但是有点麻烦,懒得证了)。

这道题还有个小坑,10^10会爆int,因此用long存面积。读题仔细一点就ok。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int x1 = scan.nextInt(); int y1 = scan.nextInt();
        int x2 = scan.nextInt(); int y2 = scan.nextInt();
        int x3 = scan.nextInt(); int y3 = scan.nextInt();
        int x4 = scan.nextInt(); int y4 = scan.nextInt();

        // 总面积
        long ans = (long)(y2 - y1) * (x2 - x1) + (y4 - y3) * (x4 - x3);
        
        // 不相交,不减,相交,减去相交面积
        if(x2 < x3 || x4 < x1 || y3 > y2 || y1 > y4) System.out.println(ans);
        else System.out.println(ans - (long)((Math.min(y2, y4) - Math.max(y1, y3))
         * (Math.min(x2, x4) - Math.max(x1, x3))));

        scan.close();
    }
}

蜗牛

题目

思路:dp

f[i][0]:到达第i根竹竿底部的最短用时                f[i][1]:到达第i根竹竿上传送门的最短用时

从第i点去i+1点:

底部:1.从i进入传送门,i+1出来,往下爬。        2.从i底部直接爬到i+1底部

传送门入口:1.从i进入传送门,i+1出来,往传送门爬(可能往上或下)        2.从i底部直接爬到i+1底部,再往上爬到传送门入口。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {

    static final int N = 100010;

    static int n;
    static int[] x = new int[N], a = new int[N], b = new int[N];
    static double[][] f = new double[N][2];

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        n = scan.nextInt();
        for(int i = 1; i <= n; i++) x[i] = scan.nextInt();
        for(int i = 1; i < n; i++){
          a[i] = scan.nextInt();
          b[i + 1] = scan.nextInt();
        }

        f[1][0] = x[1];
        f[1][1] = x[1] + a[1] / 0.7;

        for(int i = 2; i <= n; i++){
          // 从下面走或者走传送门
          f[i][0] = Math.min(f[i - 1][0] + x[i] - x[i - 1], f[i - 1][1] + b[i] / 1.3);
          // 如果传送门出口在入口上面,往上,否则往下,或者直接走下面
          if(a[i] > b[i]) f[i][1] = Math.min(f[i - 1][0] + x[i] - x[i - 1] + a[i] / 0.7, f[i - 1][1] + (a[i] - b[i]) / 0.7);
          else f[i][1] = Math.min(f[i - 1][0] + x[i] - x[i - 1] + a[i] / 0.7, f[i - 1][1] + (b[i] - a[i]) / 1.3);
        }

        System.out.println(String.format("%.2f", f[n][0]));
       
        scan.close();
    }
}

合并区域

题目

思路:dfs + 暴力

思路很简单,但是我估计大家都懒得写(

把地A和读入,旋转3次全部存入数组中,B同理。然后列出两块地的所有位置可能,dfs一下就ok

import java.util.*;
public class Main {

    static final int N = 60;

    static int n;
    static char[][][] A = new char[4][N][N], B = new char[4][N][N];
    static char[][] M = new char[3 * N][2 * N];  // M储存每种排列方式
    static int[] dx = {-1, 1, 0, 0}, dy = {0, 0, -1, 1};

    static void readAndFillArray(Scanner scan, int n, char[][][] array) {
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++) {  // 读入4种旋转
                char val = (char) (scan.nextInt() + '0');
                array[0][i][j] = val;
                array[1][j][n - 1 - i] = val;
                array[2][n - 1 - i][n - 1 - j] = val;
                array[3][n - 1 - j][i] = val;
            }
    }

    static int solve() {
        int res = 0;
        for (int i = 0; i < M.length; i++)
            for (int j = 0; j < M[i].length; j++)
                if (M[i][j] == '1')  // 每找到一个为1的点就dfs
                    res = Math.max(res, dfs(i, j, 0));

        return res;
    }
    static int dfs(int i, int j, int cnt) {
        if (i < 0 || i >= M.length || j < 0 || j >= M[i].length || M[i][j] == '0')
            return cnt;  // 边界返回

        M[i][j] = '0'; cnt++;

        for(int k = 0; k < 4; k++) cnt = dfs(i + dx[k], j + dy[k], cnt);
        return cnt;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt(); int move = 2 * n - 1;

        readAndFillArray(scan, n, A);
        readAndFillArray(scan, n, B);

        int max = 0;
        for(int a = 0; a < 4; a++)  // A旋转
            for(int b = 0; b < 4; b++)  // B旋转
                for(int m = 0; m < move; m++) {
                    // M归零防止上一次结果影响
                    for(int i = 0; i < 3 * n; i++) Arrays.fill(M[i], '0');

                    for(int i = 0; i < n; ++i) {
                        // A,B放入M
                        System.arraycopy(A[a][i], 0, M[n - 1 + i], 0, n);
                        System.arraycopy(B[b][i], 0, M[m + i], n, n);
                    }
                    max = Math.max(max, solve());
                }

        System.out.println(max);
        scan.close();
    }
}

买二赠一

题目

思路:双指针

从贵的往便宜的买,买两个后找到能免费的最贵的物品,重复此操作即可

import java.util.*;
import java.io.*;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {

    static final int N = 500010;

    static int n;
    static int[] a = new int[N];
    static boolean[] st = new boolean[N];

    public static void main(String[] args) throws IOException {
        // 数据量比较大,用BufferedReader读入
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(reader.readLine());
        String[] str = reader.readLine().split(" ");
        for(int i = 0; i < n; i++) a[i] = Integer.parseInt(str[i]);
        
        // 从小到大排序,从后往前取,先买贵的
        Arrays.sort(a, 0, n);

        // i买的,j送的,count记录买第几个,free表示免费最高价格
        int i = n, j = n, count = 0, free = 0;
        long ans = 0;
        while(j >= 0) {
            if(count != 2) {                    // 没买两个,不送
              count++;
              do i--; while(i >= 0 && st[i]);   // 已经买过/送过的不能再买/送了
              if(i < 0) break;
              st[i] = true;                     // 没买/送,买它!
              ans += a[i];
              free = a[i] / 2;                  // 从大往小取,取到的第二个一定是便宜的物品
            }
            else {
              count = 0;
              do j--; while(j >= 0 && (st[j] || a[j] > free));  // 已经买过/送过的不能再买/送了,并且价格要小于free才能送
              if(j < 0) break;                  // 不满足送东西的要求了
              st[j] = true;
            }
        }

        for(i = 0; i < n; i++)                  // 还没买的全给它买了
          if(!st[i]) ans += a[i];
        
        System.out.println(ans);

        reader.close();
    }
}

合并石子

题目 

思路:dp

在二维数组基础上多加一维表示石子颜色,我们可以直接枚举三个状态,当左右都合法时,我们就可以合并两堆石子,也就是dp(i1,j1,k)和dp[i2,j2,k]都合法就可以合并两个区间

注意,我们此时跑完区间(l,r)得到的num(l,r)跟cost(l,r)不一定是最小的,
我们还要再跑一次循环,得到最小的堆数和价值

import java.util.*;

public class Main {

    static final int N = 310, MAX = Integer.MAX_VALUE;

    static int n;
    static int[][][] dp = new int[N][N][3]; //dp[i][j][c] 表示从i到j且颜色为c的石碓合并后所花费的最小石头数
    static int[] sum = new int[N];              //sum[i] 表示从第1堆到第i堆的石头数之和
    static int[][] num = new int[N][N];    //num[i][j] 表示从i到j合并后的最小堆数 ,即第一个输出答案
    static int[][] cost = new int[N][N];    //cost[i][j] 表示从i到j合并后的所花费的最小石头数,即第二个输出答案

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();

        for (int i = 1; i <= n; i++) {
            for (int j = i; j <= n; j++) {
                num[i][j] = j - i + 1;     //初始化从i到j的堆数和
                Arrays.fill(dp[i][j], MAX); //全部石碓初始化为maxValue方便判断
            }
        }
        for (int i = 1; i <= n; i++)  // 用前缀和计算合并的花费
            sum[i] = sum[i - 1] + scan.nextInt();

        for (int i = 1; i <= n; i++)
            dp[i][i][scan.nextInt()] = 0; // 初始化存在的石碓

        // i,len表示本次排i到i+len的石子,令j=i+len只是为了减少代码长度
        for (int len = 1; len < n; len++) {
            for (int i = 1; i + len <= n; i++) {
                int j = i + len;
                for (int c = 0; c < 3; c++) { //三种颜色
                    int min = MAX;

                    for (int k = i; k < j; k++)
                        //判断两堆石碓是否合法存在,如果值为maxValue,则表示不存在;只有两堆都存在才能合并
                        if (dp[i][k][c] != MAX && dp[k + 1][j][c] != MAX)
                            min = Math.min(min, dp[i][k][c] + dp[k + 1][j][c] + sum[j] - sum[i - 1]);

                    if (min != MAX) {
                        dp[i][j][(c + 1) % 3] = Math.min(dp[i][j][(c + 1) % 3], min);  // 找到最优合并后的值min
                        num[i][j] = 1;  //合并后,从第i堆到第j堆成为1堆
                        cost[i][j] = Math.min(dp[i][j][0], Math.min(dp[i][j][1], dp[i][j][2]));  // 合并后,从第i堆到第j堆找到最少的花费
                    }
                }
            }
        }
        for (int k = 1; k <= n; k++) {
            for (int i = 1; i <= k; i++) {
                for (int j = k + 1; j <= n; j++) {
                    //找到从i到j堆中,合并过后的,最少堆数,在此最少堆数的基础上再找对应的最少花费
                    if (num[i][j] > num[i][k] + num[k + 1][j]) {
                        num[i][j] = num[i][k] + num[k + 1][j];
                        cost[i][j] = cost[i][k] + cost[k + 1][j];
                    }
                    else if (num[i][j] == num[i][k] + num[k + 1][j])  //如果堆数相同,则找到最少的花费
                        cost[i][j] = Math.min(cost[i][j], cost[i][k] + cost[k + 1][j]);
                }
            }
        }
        System.out.println(num[1][n] + " " + cost[1][n]);
    }
}

最大开支

题目

思路:贪心

i个人,需要花(B+K*i)*i, i + 1人则要花(B+K*(i + 1))*(i+1),多花more = B-(2*i + 1)*K块;

因此新建个类,包含K,B,i,more,再建个堆,按more从大到小排序,每次加最大的more就ok了。

import java.util.*;
import java.io.*;

public class Main {

    static final int N = 100010;

    static int n, m;
    static PriorityQueue<item> pq = new PriorityQueue<>(new Comparator<item>() {
        @Override
        public int compare(item i1, item i2) {
            return Integer.compare(i2.more, i1.more);
        }
    });

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] str = reader.readLine().split(" ");
        n = Integer.parseInt(str[0]); m = Integer.parseInt(str[1]);
        for(int i = 0; i < m; i++) {
            str = reader.readLine().split(" ");
            int b = Integer.parseInt(str[0]);
            int k = Integer.parseInt(str[1]);
            if(k + b > 0) pq.add(new item(k, 1, b, k + b));
        }

        long ans = 0;
        while(!pq.isEmpty() && n > 0) {  // 最多只能加n次
            item i = pq.poll();
            ans += i.more;
            i.more = i.k + (2 * i.times + 1) * i.b;
            if(i.more > 0) pq.add(new item(i.k, i.times + 1, i.b, i.more));
            n--;
        }

        System.out.println(ans);
    }

    static class item {
        int k, times, b, more;
        item(int k, int times, int b, int more) {
            this.k = k;
            this.times = times;
            this.b = b;
            this.more = more;
        }
    }
}

魔法阵

题目

思路:dijkstra+dp

这道题如果没有魔法减伤就是一道非常标准的dijkstra算法题,加入减伤后,我们可以用dp来记录。

dp[i][j]表示的是到达第i点并且消除了连续j段的伤害。

我们可以列出状态计算公式(i是t的下一个点):

1.dp[i][0] = dp[t][0]+w[i, t]; (正常dijkstra)                       2.dp[i][k] = min(dp[t][k-1],dp[i][k])

3.dp[i][K] = min(dp[t][K] + g[i][t],dp[i][K])  

M是N^2级的,因此采用邻接矩阵来存路线。本来朴素dijkstra是用bool类型来储存点是否经过,但是本题有可能会重复走某一个点,所以用队列来存改变距离的点。

import java.util.*;
import java.io.*;

public class Main {

    static final int N = 1010;

    static int n, m, k;

    static int[][] dp = new int[N][N], g = new int[N][N];

    static void dijkstra() {
        for(int i = 0; i < N; i++)
            for(int j = 0; j < N; j++)
                dp[i][j] = 0x3f3f3f3f;
        dp[0][0] = 0;

        Queue<Integer> q = new LinkedList<>();
        q.add(0);

        while (!q.isEmpty()) {
            int t = q.poll();

            for (int i = 0; i < n; i++) {
                if(g[t][i] < 0x3f3f3f3f) {
                    boolean flag = false;

                    if (dp[i][0] > dp[t][0] + g[i][t]) {
                        dp[i][0] = dp[t][0] + g[i][t];
                        flag = true;
                    }

                    for (int k1 = 1; k1 <= k; k1++) {
                        if (dp[i][k1] > dp[t][k1 - 1]) {
                            dp[i][k1] = dp[t][k1 - 1];
                            flag = true;
                        }
                    }

                    if (dp[i][k] > dp[t][k] + g[i][t]) {
                        flag = true;
                        dp[i][k] = dp[t][k] + g[i][t];
                    }

                    if (flag) q.add(i);
                }
            }
        }

    }

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] str = reader.readLine().split(" ");
        n = Integer.parseInt(str[0]);
        k = Integer.parseInt(str[1]);
        m = Integer.parseInt(str[2]);

        for(int i = 0; i < N; i++)
            for(int j = 0; j < N; j++)
                g[i][j] = 0x3f3f3f3f;

        for (int i = 0; i < m; i ++ ) {
            str = reader.readLine().split(" ");
            int a = Integer.parseInt(str[0]);
            int b = Integer.parseInt(str[1]);
            int w = Integer.parseInt(str[2]);
            g[a][b] = Math.min(w, g[a][b]); g[b][a] = g[a][b];
        }

        dijkstra();

        System.out.println(Math.min(dp[n - 1][0], dp[n - 1][k]));
    }
}

阶乘求和

题目

思路

找末尾0的数量,i>40时,i!末尾一定大于9个0(i!中乘了9个以上的5和2),由此暴力即可

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
  static final int MOD = (int)1e9;
    public static void main(String[] args) {
        long ans = 0;
        long p = 1;
        for(int i = 1; i <= 40; i++){
          ans = (ans + p) % MOD;
          p = p * (i + 1) % MOD;
        }
        System.out.println(ans);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/481482.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【目标检测基础篇】目标检测评价指标:mAP计算的超详细举例分析以及coco数据集标准详解(AP/AP50/APsmall.....))

学习视频&#xff1a; 霹雳吧啦Wz-目标检测mAP计算以及coco评价标准 【目标检测】指标介绍&#xff1a;mAP 1 TP/FP/FN TP(True Positive) : IoU>0.5的检测框数量(同一Ground truth只计算一次)FP(False Positive) : IoU<0.5的检测框(或者是检测到同一个GT的多余检测框的…

nacos 更新报错“发布失败。请检查参数是否正确”

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容起因解决方案结果 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华…

FL Studio2024全能数字编曲音频工作站,打造专业电音的不二之选!

FL Studio2024全能数字编曲音频工作站&#xff0c;打造专业电音的不二之选&#xff01; 专业机构力荐&#xff0c;让你的音乐创作如虎添翼 在音乐的世界里&#xff0c;没有什么比创作出属于自己的独特旋律更令人兴奋的了。 而今天&#xff0c;我们为你带来了一款能够让音乐制作…

Hive SQL必刷练习题:排列组合问题【通过join不等式】

排列组合问题【通过join不等式】 这种问题&#xff0c;就是数学的排列不等式&#xff0c;一个队伍只能和其余队伍比一次&#xff0c;不能重复 方法1&#xff1a;可以直接通过join&#xff0c;最后on是一个不等式【排列组合问题的解决方式】 方法2&#xff1a;也可以是提前多加…

PDF文件如何以数字进行批量重命名?以数字重命名的PDF文件

在日常生活和工作中&#xff0c;我们经常需要处理大量的PDF文件&#xff0c;如文档、报告、合同等。为了更高效地管理这些文件&#xff0c;一个有效的方式就是对它们进行批量命名。批量命名不仅能提高文件的组织性&#xff0c;还能节省大量时间。下面&#xff0c;我们将详细介绍…

springboot实现文件上传

SpringBoot默认静态资源访问方式 首先想到的就是可以通过SpringBoot通常访问静态资源的方式&#xff0c;当访问&#xff1a;项目根路径 / 静态文件名时&#xff0c;SpringBoot会依次去类路径下的四个静态资源目录下查找&#xff08;默认配置&#xff09;。 在资源文件resour…

关于调度算法,小林给出更好的例子(银行办理业务)

看的迷迷糊糊&#xff1f;那我拿去银行办业务的例子&#xff0c;把上面的调度算法串起来&#xff0c;你还不懂&#xff0c;你锤我&#xff01; 办理业务的客户相当于进程&#xff0c;银行窗口工作人员相当于 CPU。 现在&#xff0c;假设这个银行只有一个窗口&#xff08;单核 …

个人家庭安装光伏流程及注意事项

今年《政府工作报告》提出&#xff0c;推动分布式能源开发利用。这是“分布式能源”首次被写入《政府工作报告》。从地方层面来看&#xff0c;“分布式能源”也被多个地方列入今年的政府工作重点&#xff0c;可见光伏发展依旧强势。 光伏安装流程大概分为以下几步&#xff1a; …

【数据分析案列】--- 北京某平台二手房可视化数据分析

一、引言 本案列基于北京某平台的二手房数据&#xff0c;通过数据可视化的方式对二手房市场进行分析。通过对获取的数据进行清冼&#xff08;至关重要&#xff09;&#xff0c;对房屋价格、面积、有无电梯等因素的可视化展示&#xff0c;我们可以深入了解北京二手房市场的特点…

校招免费资料大集合

通过以下资料&#xff0c;你可以免费获取到大量的校招资料和相关信息&#xff0c;帮助你更好地准备校园招聘。 学习交流群&#xff1a;进行计算机知识分享和交流&#xff0c;提供内推机会&#xff0c;QQ群号&#xff1a;325280438 夏沫Coding&#xff1a;致力于分享计算机干货…

机器学习聚类分析算法之均值漂移算法

简介 均值漂移算法(Mean Shift Algorithm)是一种非参数化的聚类算法,常用于图像分割、目标跟踪和密度估计等任务。该算法基于密度估计的原理,通过不断地迭代更新数据点的位置,使得数据点向密度较高的区域移动,最终聚集成簇。均值漂移算法的核心思想是在数据点的特征空间…

SQL96 返回顾客名称和相关订单号(表的普通联结、内联结inner join..on..)

方法一&#xff1a;普通联结 select cust_name, order_num from Customers C,Orders O where C.cust_id O.cust_id order by cust_name,order_num;方法二&#xff1a;使用内连接 select cust_name,order_num from Customers C inner join Orders O on C.cust_id O.cust_id …

Jmeter-基础元件使用(二)-属性及对数据库简单操作

一、Jmeter属性 当我们想要在不同线程组中使用某变量&#xff0c;就需要使用属&#xff0c;此时Jmeter属性的设置需要函数来进行set和get操作 1.创建set函数 2.然后采用Beanshell取样器进行函数执行 3.调用全局变量pro_id 4.将上面生成的函数字符串粘贴到另一个线程组即可…

YOLOv8 | 注意力机制 | ShuffleAttention注意力机制 提升检测精度

YOLOv8成功添加ShuffleAttention ⭐欢迎大家订阅我的专栏一起学习⭐ &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查看不迷路&#x1f680;&#x1f680;&#x1f680; YOLOv5涨点专栏&#xff1a;http://t.csdnimg.cn/1Aqzu YOLOv8涨点专栏…

一键掌控:Shell脚本自动化安装与管理Conda环境的艺术

前面写了个博客《conda&#xff1a;解决多项目开发环境配置的神器&#xff01;》简单介绍了 Conda 的安装和基本命令&#xff0c;在做开发时经常会使用 Conda 建立多个应用环境&#xff0c;Conda 的命令虽不复杂&#xff0c;但还是有时会弄混&#xff0c;所以就考虑写个脚本&am…

分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测

分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测 目录 分类预测 | Matlab实现PSO-KELM粒子群优化算法优化核极限学习机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现PSO-KELM粒子群优化算法优化核极限学习机分类预测(完整源…

python3文件对象方法seek()心得

python3文件对象方法seek()心得 本文环境&#xff1a; Windows 10 专业版 64 位 Thonny 3.2.6 概述 python3中文件对象的方法 seek() 用于移动文件读写指针到指定位置。 语法 file_object.seek(offset[, whence]) 参数说明 file_object 是文件对象&#xff0c;通常是通…

论文阅读之PeriodicLoRA: Breaking the Low-Rank Bottleneck in LoRA Optimization(2024)

文章目录 论文地址主要内容主要贡献模型图技术细节实验结果 论文地址 PeriodicLoRA: Breaking the Low-Rank Bottleneck in LoRA Optimization 主要内容 这篇文章的主要内容是介绍了一种名为PeriodicLoRA&#xff08;PLoRA&#xff09;的参数高效微调&#xff08;Parameter-…

C++第十弹---类与对象(七)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、再谈构造函数 1.1、构造函数体赋值 1.2、初始化列表 1.3、explicit关键字 2、static成员 2.1、概念 2.2、特性 2.3、面试题 总结 1、再…

一个极简的用于 Web 服务鉴权的反向代理服务

Auth Proxy 一个极简的用于 Web 服务鉴权的反向代理服务 Demo&#xff08;密码为&#xff1a;whoami&#xff09;&#xff1a;https://auth-proxy.wengcx.top/ 极其简约的 UI对你的真实服务无任何侵入性支持容器部署&#xff0c;Docker Image 优化到不能再小&#xff08;不到…