第十三届蓝桥杯大赛软件赛省赛(Java 大学A组)

Posted 肖有量

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十三届蓝桥杯大赛软件赛省赛(Java 大学A组)相关的知识,希望对你有一定的参考价值。

蓝桥杯 2022年省赛真题
Java 大学A组


  小做一会 J A \\mathrmJA JA 打发时间。


试题 A: 裁纸刀

本题总分: 5 5 5


【问题描述】

  小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。

  小蓝用一张纸打印出两行三列共 6 6 6 个二维码,至少使用九次裁出来,下图给出了一种裁法。


  在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁 4 4 4 次。另外,小蓝每次只能裁一张纸,不能重叠或者拼起来裁。

  如果小蓝要用一张纸打印出 20 20 20 22 22 22 列共 440 440 440 个二维码,他至少需要裁多少次?

【答案提交】

  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


443


  我们可以仿照两行三列时,题目给出的切分法,写出一个递归程序去计算它的切割次数,

  题目给出的方法可以抽象为两部分,

   1 、 1、 1边缘裁剪 4 4 4 次。
   2 、 2、 2选择当前纸片中连接二维码数量最多的一条线,沿其切割,分割成两个小纸片,重复此步直至纸片的某行或某列为 1 1 1

public class Test 

    public static void main(String[] args)  System.out.println(calc(20, 22) + 4); 

    static int calc(int row, int col) 
        if (row > col) return calc(col, row);
        if (col == 1) return row - 1;
        if (row == 1) return col - 1;
        if (row % 2 == 0) return 2 * calc(row / 2, col) + 1;
        return calc(1, col) + 2 * calc(row / 2, col) + 2;
    

  当然这种方式并非绝对最优,一种较为稳妥的方式是在记忆化处理下暴搜,不过总所周知,记忆化搜索是状压 d p \\mathrmdp dp 的递归实现,由此,我们可以在状态转移方程上研究出最优方案之间的共性,

  设状态 f i , j f_i,j fi,j i i i j j j 列的纸片在最优裁剪方案下的步骤数,显然有 f i , j = f j , i f_i,j = f_j,i fi,j=fj,i f i , 1 = i − 1 f_i,1 = i-1 fi,1=i1 f i , j = min ⁡ f i ′ , j + f i − i ′ , j , f i , j ′ + f i , j − j ′ + 1 ∣ 1 ≤ i ′ < i , 1 ≤ j ′ < j f_i,j=\\min\\f_i',j+f_i-i',j,f_i,j' +f_i,j-j'\\+1|1\\leq i' < i,1\\leq j' < j fi,j=minfi,j+fii,j,fi,j+fi,jj+11i<i,1j<j

  当我们知道 f i ′ , j + f i − i ′ , j f_i',j+f_i-i',j fi,j+fii,j f i , j ′ + f i , j − j ′ f_i,j' +f_i,j-j' fi,j+fi,jj 中谁更优时,不妨假设当 i + j = k + g i+j=k+g i+j=k+g f i , j = f k , g f_i,j = f_k,g fi,j=fk,g

  我们将 f i , j f_i,j fi,j 的表达式变形为 f i , j = min ⁡ f i ′ , j + f i − i ′ , j + 1 , f i , j ′ + f i , j − j ′ + 1 − 1 f_i,j=\\min\\f_i',j+f_i-i',j+1,f_i,j' +f_i,j-j'+1\\-1 fi,j=minfi,j+fii,j+1,fi,j+fi,jj+11,将 f i , 1 = i − 1 f_i,1 = i-1 fi,1=i1 代入式中会发现,无论怎么拆分,最后表达式一定是若干 f 1 , x + 1 f_1,x+1 f1,x+1 f y , 1 + 1 f_y,1+1 fy,1+1 − 1 -1 1 的累加,其和一定是 i × j − 1 i×j-1 i×j1

  耶,我们证明切分次数与切分方案无关,

  太棒了,草


试题 B: 寻找整数

本题总分: 5 5 5


【问题描述】

  有一个不超过 1 0 17 10^17 1017 的正整数 n n n,知道这个数除以 2 2 2 49 49 49 后的余数如下表所示,求这个正整数最小是多少。

【答案提交】

  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


2022040920220409


扩展中国剩余定理


  对于一元线性同余方程组 : : x ≡ r 1 ( m o d n 1 ) x ≡ r 2 ( m o d n 2 )   ⋮ x ≡ r k ( m o d n k ) \\begincases x &\\equiv r_1 \\pmod n_1 \\\\ x &\\equiv r_2 \\pmod n_2 \\\\ &\\ \\vdots \\\\ x &\\equiv r_k \\pmod n_k \\\\ \\endcases 第十三届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组思考+总结

2022 第十三届蓝桥杯大赛软件赛省赛,C/C++ 大学B组题解

2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C++ 大学B组题解

2020 第十一届蓝桥杯大赛软件赛省赛(第一场),C/C++大学B组题解

2019 第十届蓝桥杯大赛软件赛省赛,C/C++大学B组题解

2019 第十届蓝桥杯大赛软件赛省赛,C/C++大学B组题解