当前位置: 首页 > article >正文

蓝桥杯训练

1对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。

例如,如下矩阵中

LANN
QIAO

有LN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、ANLN、LN、AN、AN、IO、AO、LQ、AI、NO、NO、AQ、IN、AN 等 131 个 递增序列。注意当两个字母是从左下到右上排列时,从左向右看和从上向下看 是不同的顺序。

对于下面的 30 行 50 列的矩阵,请问总共有多少个递增序列?

VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR RRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX

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

public class Main {
    public static void main(String[] args) {
       /* Scanner scan = new Scanner(System.in);
        char[][] arr=new char[30][50];
        for(int i=0;i<30;i++){
            arr[i]=(scan.next()).toCharArray();
        }
        int sum =0;
        for(int i=0;i<30;i++){
            for(int j=0;j<50;j++){
                for(int m=0;m<30;m++){
                    for(int n=0;n<50;n++){
                        if(!(m==i&&n==j)){
                            if((m==i)||(n==j)||Math.abs(m-i)==Math.abs(n-j)){
                                if((m>i&&n>j)||(m==i&&n>j)||(n==j&&m>i)){
                                    if(arr[i][j]<arr[m][n]){
                                        sum++;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        System.out.println(sum);*/
        System.out.println(52800);
    }
}

思路:暴力解法,四层循环,先看成字符数组,再考虑大小关系和方向关系。

2

儿童节那天有 KK位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。

小明一共有 N 块巧克力,其中第 ii块是 Hi×Wii 的方格组成的长方形。为了公平起见,

小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:

  1. 形状是正方形,边长是整数;

  2. 大小相同;

例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。

当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?

输入描述

第一行包含两个整数 N,K (1≤N,K≤105)。

以下 N 行每行包含两个整数 Hi,Wi(1≤Hi,Wi≤105)。

输入保证每位小朋友至少能获得一块 1x1 的巧克力。

输出描述

输出切出的正方形巧克力最大可能的边长。

输入输出样例

示例

输入

2 10
6 5
5 6

输出

2

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        boolean flag = true;
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt(); 
        int K = sc.nextInt(); 
        int[][] arr = new int[N][2];
        
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < 2; j++) {    
                arr[i][j] = sc.nextInt();
            }
        }
        int length=1;
        int sum = 0;
        while(flag){
          int i;
          for(i=0;i<N;i++){

            sum+=(arr[i][0]/length)*(arr[i][1]/length);
            if(sum>=K){
              break;
            }
          }
        if(i==N&&sum<K){
          flag=false;
        }else{
          length++;
          sum=0;
        }
        }
        System.out.println(length-1);
        sc.close();
    }
}

思路:确立x*x,切出的矩形占两位,建立数组;再假设从1*1开始切,再看切的个数和小朋友个数作比较。


http://www.kler.cn/a/473384.html

相关文章:

  • 1688平台商品关键词搜索的多样性与Python爬虫应用实践
  • USB 驱动开发 --- Gadget 设备连接 Windows 免驱
  • Python入门教程 —— 网络编程
  • SpringCloud系列教程:微服务的未来(十)服务调用、注册中心原理、Nacos注册中心
  • TensorRT-LLM中的MoE并行推理
  • 【阅读笔记】基于FPGA的红外图像二阶牛顿插值算法的实现
  • T-SQL语言的语法
  • 使用 SQLite3 的基本操作步骤
  • Azkaban其一,介绍、体系架构和安装
  • Linux-----结构体与联合体,大小端模式
  • 高等数学学习笔记 ☞ 函数的求导法则
  • Maven核心与单元测试
  • Linux-Ubuntu之I2C通信
  • iOS 逆向学习 - iOS Architecture Media Layer
  • Ubuntu 上安装 Docker
  • Kotlin OpenCV 画画
  • QPS和TPS 的区别是什么?QPS 大了会有什么问题,怎么解决?
  • Java基础概念
  • EasyExcel上传校验文件错误信息放到文件里以Base64 返回给前端
  • springboot + vue+elementUI图片上传流程
  • TypeScript语言的数据库交互
  • 【JavaEE进阶】获取Cookie/Session
  • OpenCV相机标定与3D重建(48)对三台相机进行极线校正(rectification)函数rectify3Collinear()的使用
  • vue3使用vue3-video-play播放m3u8视频
  • CTF知识点总结(二)
  • Linux中彻底卸载Oracle 19.25单实例数据库