2023年第十四届蓝桥杯省赛Java C组题解

这篇具有很好参考价值的文章主要介绍了2023年第十四届蓝桥杯省赛Java C组题解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

只做出来(ACDFGH),挑几个出来,答案不一定正确,但自己测试通过了

A、求和

求1~20230408的和

public class Main{

	public static void main(String[] args) {
        System.out.println((long)20230409*10115204);
	}
}

这里就直接套等差数列的求和公式,答案:204634714038436

 文章来源地址https://www.toymoban.com/news/detail-426087.html

D、平均

【问题描述】

        有一个长度为n的数组(n是10的倍数),每个数 Ai 都是区间[0,9]中的整数,小明发现数组里每种数出现的次数不太平均,而更改第 i 个数的代价为bi,他想更改着若干个数的值使得这 10 种数出现的次数相等(都等于n/10,请问代价和最少为多少。

【输入格式】

        输入的第一行包含一个正整数 n。
        接下来n行,第i行包含两个整数ai,bi,用一个空格分隔。

【输出格式】

        输出一行包含一个正整数表示答案。

【样例输入】

10
1 1
1 2
1 3
2 4
2 5
2 6
3 7
3 8
3 9
4 10

【样例输出】

        27

【样例说明】

        只更改第 1,2,4,5.7,8 个数,需要花费代价 1+2+4+5+7+8=27。

【评测用例规模与约定】

        对于20%的评测用例,n<=1000;
        对于所有评测用例n <= 100000,0<bi<=2×10^5。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.*;

public class Main {
    private static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));


    public static void main(String[] args) throws IOException {
        int n = next();

        List<Queue<Integer>> list = new ArrayList<>(10);
        for (int i = 0; i < 10; i++) {
            list.add(new PriorityQueue());
        }

        for (int i = 1; i <= n; i++) {
            int a = next();
            int b = next();
            list.get(a).offer(b);
        }

        int count = 0;
        n /= 10;
        for (int i = 0; i < 10; i++) {
            Queue<Integer> queue = list.get(i);
            if (queue.size() <= n)
                continue;
            for (int j = 0; j <= queue.size() - n; j++) {
                count += queue.poll();
            }
        }
        System.out.println(count);
    }

    private static int next() throws IOException {
        st.nextToken();
        return (int) st.nval;
    }
}


 

F、棋盘

【问题描述】

        小蓝拥有 n × n 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了m次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)。请输出所有操作做完后棋盘上每个棋子的颜色。

【输入格式】

        输入的第一行包含两个整数n,m,用一个空格分隔,表示棋盘大小与操作数。
        接下来m行每行包含四个整数 X1,Y1,X2,Y2,相邻整数之间使用一个空格分隔,表示将在X1至X2行和Y1至Y2列中的棋子颜色取反。

【输出格式】

        输出n行,每行n个0或1表示该位置棋子的颜色。如果是白色则输出0,否则输出1。

【样例输入】

3 3
1 1 2 2
2 2 3 3
1 1 3 3

【样例输出】

001

010

100

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

public class Main {
    private static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    public static void main(String[] args) throws IOException {
        int n, m;
        n = next();
        m = next();
        int[][] qp = new int[n + 1][n + 1];

        for (int i = 1; i <= m; i++) {
            int x1, y1, x2, y2;
            x1 = next();
            y1 = next();
            x2 = next();
            y2 = next();
            for (int j = x1; j <= x2; j++) {
                for (int k = y1; k <= y2; k++) {
                    int v = qp[j][k];
                    if (v == 0)
                        qp[j][k] = 1;
                    else
                        qp[j][k] = 0;
                }
            }
        }

        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                System.out.print(qp[i][j]);
            }
            System.out.println();
        }
    }

    private static int next() throws IOException {
        st.nextToken();
        return (int) st.nval;
    }
}

 

G、子矩阵

【问题描述】

        给定一个n × m(n行m列)的矩阵。

        设一个矩阵的价值为其所有数中的最大值和最小值的乘积。求给定矩阵的所有大小为a × b(a行b)的子矩阵的价值的和。

        答案可能很大,你只需要输出答案对998244353 取模后的结果。

【输入格式】

        输入的第一行包含四个整数分别表示 n,m,a,b,相邻整数之间使用一个空格分隔。
        接下来n 行每行包含m个整数,相邻整数之间使用一个空格分隔,表示矩阵中的每个数Aij。

【输出格式】

        输出一行包含一个整数表示答案。

【样例输入】

        2 3 1 2
        1 2 3
        4 5 6

【样例输出】

        58

【样例说明】

        1×2 + 2×3 + 4×5 + 5×6 = 58。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.math.BigInteger;

public class Main {
    private static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    public static void main(String[] args) throws IOException {
        int m, n, a, b;
        m = next();
        n = next();
        a = next();
        b = next();
        int[][] nums = new int[m + 1][n + 1];
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                nums[i][j] = next();
            }
        }

        BigInteger count = new BigInteger("0");
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {

                BigInteger temp = null;
                if (i + a - 1 <= m && j + b - 1 <= n) {
                    temp = new BigInteger("1");
                    for (int k = i; k <= i + a - 1; k++) {
                        for (int l = j; l <= j + b - 1; l++) {
                            temp = temp.multiply(BigInteger.valueOf(nums[k][l]));
                        }
                    }
                }
                if (temp == null)
                    continue;
                count = count.add(temp);
            }
        }
        System.out.println(count.mod(new BigInteger("998244353")));

    }

    private static int next() throws IOException {
        st.nextToken();
        return (int) st.nval;
    }
}

 

H、公因数匹配

【问题描述】

        给定n个正整数Ai,请找出两个数 i,j 使得 i < j 且 Ai 和 Aj 存在大于1的公因数。
        如果存在多组 i,j,请输出 i 最小的那组。如果仍然存在多组 i,j, 请输出最小的所有方案中 j最小的那组。

【输入格式】

        输入的第一行包含一个整数 n。
        第二行包含n个整数分别表示A1 A2 ......An,相邻整数之间使用一个空格分隔。

【输出格式】

        输出一行包含两个整数分别表示题目要求的 i,j,用一个空格分隔。

【样例输入】

5

5 3 2 6 9

【样例输出】

2 4

【评测用例规模与约定】

对于40%的评测用例,n≤5000;
对于所有评测用例,1<=n<=10^5,1<=Ai<=10^6;

 

由于Scanner的nextInt()底层用了正则表达式,会降低输入效率,这里我用StreamTokenizer

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Comparator;
import java.util.PriorityQueue;

public class Main {
    private static final StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

    static class MyComparator implements Comparator<Node> {

        @Override
        public int compare(Node o1, Node o2) {
            if (o1.i == o2.i)
                return o1.j - o2.j;
            return o1.i - o2.i;
        }
    }

    public static void main(String[] args) throws IOException {
        int n = next();
        int[] nums = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            nums[i] = next();
        }

        PriorityQueue<Node> queue = new PriorityQueue<>(new MyComparator());
        for (int i = 1; i <= n - 1; i++) {
            for (int j = i + 1; j <= n; j++) {
                int gcd = getGCD(nums[i], nums[j]);
                if (gcd == 1)
                    continue;
                queue.offer(new Node(i, j));
            }
        }
        Node node = queue.poll();
        System.out.println(node.i + " " + node.j);

    }
    private static int getGCD(int m, int n) {
        if (n > m) {
            m = m ^ n;
            n = m ^ n;
            m = m ^ n;
        }
        if (n == 0)
            return m;
        else
            return getGCD(n, m % n);
    }

    private static int next() throws IOException {
        st.nextToken();
        return (int) st.nval;
    }
}


class Node {
    //索引i和j
    int i;
    int j;

    public Node(int i, int j) {
        this.i = i;
        this.j = j;
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

到了这里,关于2023年第十四届蓝桥杯省赛Java C组题解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯2023年第十四届省赛-飞机降落

    N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早 可以于 Ti 时刻开始降落,最晚可以于 Ti + Di 时刻开始降落。降落过程需要 Li个单位时间。 一架飞机降落完毕时,另一架

    2024年02月15日
    浏览(37)
  • 第十四届蓝桥杯省赛JavaB组试题E【蜗牛】个人题解Dijkstra堆优化

                                                                                     🍏🍐🍊🍑🍒🍓🫐🥑🍋🍉🥝                                               第十四届蓝桥杯省赛JavaB组试题E【蜗牛】Dijkstra堆

    2023年04月15日
    浏览(32)
  • 第十三届蓝桥杯省赛与国赛真题题解大汇总(十四届参赛者必备)

      大家好,我是执梗。本文汇总了我写的第十三届蓝桥杯所有省赛真题与国赛真题,会针对每道题打出我自己的难度评星⭐️,也会给出每道题的算法标签,帮助大家更有针对性的去学习和准备,当然许多题目由于难度或时间的原因暂未更新,如果有不懂的问题也可以在评

    2024年02月11日
    浏览(66)
  • 题目 3158: 蓝桥杯2023年第十四届省赛真题-三国游戏(贪心)

    小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y, Z 增加Ai , Bi ,Ci 。 当游戏结束时 (所有事件的发生与否已经确

    2024年02月01日
    浏览(38)
  • 2023年第十四届蓝桥杯大赛python组省赛真题(已更新完)

    本篇更新蓝桥杯省赛真题的后5道。 6.试题 F: 公因数匹配 时间限制: 10.0s 内存限制: 512.0MB 本题总分:15 分 【问题描述】 给定 n 个正整数 Ai,请找出两个数 i, j 使得 i j 且 Ai 和 Aj 存在大于 1 的 公因数。 如果存在多组 i, j,请输出 i 最小的那组。如果仍然存在多组 i, j,请输出

    2024年02月06日
    浏览(51)
  • 2023年第十四届蓝桥杯Web应用开发(职业院校组)省赛真题

    前言: 因博主申请的线上考试所以留下了真题,本篇文章只有题目没有答案( 真题源码资源在最后 ),因博主技术有限(请理解一下),博主只拿了省二 目录 1. 电影院排座位 2. 图⽚⽔印⽣成: 3.  收集帛书碎⽚ 4. ⾃适应⻚⾯ 5.  外卖给好评 6. 视频弹幕  7. ISBN 转换与⽣成

    2024年02月05日
    浏览(33)
  • 2023年第十四届蓝桥杯单片机开放与设计省赛微析与经验分享

    前言:        2023年4月8日, 就在昨天,本人刚参与了第十四届蓝桥杯单片机开放与设计省赛。         整体做下来,且不谈客观题,今年的程序题,个人感觉有点像大杂烩,题量大,细节多,而且有些要求定义不够清晰,所以本人这次做的不够完美,并且因为时间问题有

    2024年02月08日
    浏览(35)
  • 题目3180:蓝桥杯2023年第十四届省赛真题-互质数的个数======及探讨互质专题

    https://www.dotcpp.com/oj/problem3162.html 已AC。 (1)首先大家要知道什么叫互质: 以及它们的性质: 在数论中,对正整数n,欧拉函数φ(n)是小于或等于n的正整数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为φ函数(由高斯所命名)或是欧拉总计函数(totient fu

    2023年04月24日
    浏览(31)
  • 2023第十四届蓝桥杯C/C++B组省赛题解

    题目描述 【问题描述】 小蓝现在有一个长度为100 的数组,数组中的每个元素的值都在0 到9 的范围之内。数组中的元素从左至右如下所示: 现在他想要从这个数组中寻找一些满足以下条件的子序列: 子序列的长度为8; 这个子序列可以按照下标顺序组成一个yyyymmdd 格式的日

    2024年02月04日
    浏览(26)
  • 十四届蓝桥杯省赛CB

    写的时候没跑出来,仅仅是因为给 (i*i) 加了括号,爆了int!!! 双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308 基本类型:int 二进制位数:32(4字节) 最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方) 最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1 double范围很大,基本不可能爆,不

    2024年02月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包