蓝桥冲刺31天之第七天

news2024/9/23 7:23:50

目录

A:三角回文数

B:数数

C:数组切分

D:倍数问题


一星陨落,黯淡不了星空灿烂;

一花凋零,荒芜不了整个春天。

如果命运是世界上最烂的编剧,

你就要争取做人生最好的演员。

即使生活在阴沟里,依然有仰望星空的权利。

A:三角回文数

 因为题目以及给定1+2+...+363=66066,所以在遍历的时候可以从363开始,因为不知道这个数在多少出现,所以可以不定结果,那么循环代码如下:

for(int i=363;;i++)

 接下来我们需要判定求和结果(1+i)*i/2>20220514,且该值为回文数,那么代码如下:

package 蓝桥冲刺31天A.第七天;

import java.io.*;

/**
 * @ClassName 三角回文数
 * @Description TODO
 * @Author 小怂很怂
 * @Date 2023/3/10 10:45
 * @Version 1.0
 **/
public class 三角回文数 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer st = new StreamTokenizer(br);
    static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws Exception {
        for(int i=363;;i++){
            int k=i*(i+1)/2;
            if (k>20220514&&pd(k)){
                pw.println(k);
                pw.flush();
                return;
            }
        }
    }
    public static boolean pd(int k){
        String ss=k+"";
        int j=ss.length()-1;
        for (int i=0;i<=j;i++){//判定是否是回文数
            if (ss.charAt(i)!=ss.charAt(j)) return false;
            j--;
        }
        return true;
    }
    public static int nextInt() throws Exception {//int型
        st.nextToken();
        return (int) st.nval;
    }

    public static long nextLong() throws Exception {//long型
        st.nextToken();
        return (long) st.nval;
    }
}

B:数数

 通过遍历每一个数去求结果,建议电脑跑完后直接提交结果,会超时

package 蓝桥冲刺31天A.第七天;

import java.io.*;

/**
 * @ClassName 数数
 * @Description TODO
 * @Author 小怂很怂
 * @Date 2023/3/10 10:54
 * @Version 1.0
 **/
public class 数数 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer st = new StreamTokenizer(br);
    static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws Exception {
        int count=0;
        for (int i=2333333;i<=23333333;i++){//遍历
            int t=i,s=0;
            for (int j=2;j*j<=t;j++){//判定这个数分解情况
                if (t%j==0){
                    t/=j;
                    s++;
                    j--;
                }
            }
            if (t!=1) s++;//t!=1的情况下,t一定为质数
            if (s==12) count++;//满足s=12,则计数
        }
        pw.println(count);
        pw.flush();//必须加
    }

    public static int nextInt() throws Exception {//int型
        st.nextToken();
        return (int) st.nval;
    }

    public static long nextLong() throws Exception {//long型
        st.nextToken();
        return (long) st.nval;
    }
}

C:数组切分

 我们可以将每一个新放入的数产生后的连续区间看成一个整体:比如{3},{3,2},{1,3,2}这些都是一个整体,那么在计数的时候,就是去除这一个整体后,前面数的总和,例如:

或许有一点点绕,但是仔细想一下? 

package 蓝桥冲刺31天A.第七天;

import java.io.*;

/**
 * @ClassName 数组切分
 * @Description TODO
 * @Author 小怂很怂
 * @Date 2023/3/10 11:48
 * @Version 1.0
 **/
public class 数组切分 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer st = new StreamTokenizer(br);
    static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws Exception {
        int n=nextInt();
        int []arr=new int[n+1];
        for (int i=1;i<=n;i++) arr[i]=nextInt();
        int []dp=new int[n+1];
        dp[0]=1;
        for (int i=1;i<=n;i++){
            int min=n+1;
            int max=0;
            for (int j=i;j>=1;j--){
                max=Math.max(max,arr[j]);
                min=Math.min(min,arr[j]);
                if (max-min==i-j) dp[i]=(dp[i]+dp[j-1])%1000000007;
            }
        }
        pw.println(dp[n]);
        pw.flush();//必须加
    }

    public static int nextInt() throws Exception {//int型
        st.nextToken();
        return (int) st.nval;
    }

    public static long nextLong() throws Exception {//long型
        st.nextToken();
        return (long) st.nval;
    }
}

D:倍数问题

 看着像三数之和,那能不能像三数之和一样做?答案是可以的

我们先进行一次排序,因为优先大的数嘛,因为n<100000,所以如果采用O(n²)一定会超时,更何况还需要找第三个数,那么我们怎么做?题目给定了一个值K,且K<=1000,我们可以通过取模的方式,找到最多3*k个数,我们对于每一种模值只保留3个最大的数,然后遍历循环就成了O(3*k)³,这当然还是会超时的,如果我们在判定时直接结束某一次循环呢?因为数据是按照排序结果下来的,如果出现可选的最大的三个数<已经求得的最大值,我们是不是就可以不用再去进行计算了?因为再计算即使满足k的倍数,值也比最大值小

package 蓝桥冲刺31天A.第七天;

import java.io.*;
import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * @ClassName 倍数问题
 * @Description TODO
 * @Author 小怂很怂
 * @Date 2023/3/10 11:21
 * @Version 1.0
 **/
public class 倍数问题 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer st = new StreamTokenizer(br);
    static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws Exception {
        int n=nextInt();
        int k=nextInt();
        int []arr=new int[n];
        int []brr=new int[k*3];//存放%k结果的最大的三个数
        int []crr=new int[k];//%k的数的个数,只需要三个
        for (int i=0;i<n;i++) arr[i]=nextInt();
        Arrays.sort(arr);
        int s=0;
        for (int i=n-1;i>=0;i--){//从中选出3*k个数
            if (crr[arr[i]%k]<=2){//判断该模值是否到达3
                crr[arr[i]%k]++;
                brr[s]=arr[i];//存入
                s++;
            }
            if (s==3*k)break;//选完3*k个数就可以直接跳出了,没必要多进行计算
        }
        int count=0;
        for (int i=0;i<s-2;i++){
            if (brr[i]*3<=count) break;//最大的情况比已知结果小,跳出
            for (int j=i+1;j<s-1;j++){
                if (brr[i]+brr[j]*2<=count) break;//最大的情况比已知结果小,跳出
                for (int l=j+1;l<s;l++){
                    if ((brr[i]+brr[j]+brr[l])%k==0){
                        count=Math.max(count,brr[i]+brr[j]+brr[l]);
                        break;
                    }
                    if (brr[i]+brr[j]+brr[l]<=count) break;//最大的情况比已知结果小,跳出
                }
            }
        }
        pw.println(count);
        pw.flush();//必须加
    }

    public static int nextInt() throws Exception {//int型
        st.nextToken();
        return (int) st.nval;
    }

    public static long nextLong() throws Exception {//long型
        st.nextToken();
        return (long) st.nval;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

06_02_Spark Streaming

Spark Streaming 课程目标 说出Spark Streaming的特点说出DStreaming的常见操作api能够应用Spark Streaming实现实时数据处理能够应用Spark Streaming的状态操作解决实际问题独立实现foreachRDD向mysql数据库的数据写入独立实现Spark Streaming对接kafka实现实时数据处理 1、…

打怪升级之CFileDialog类介绍

CFileDialog类 CFileDialog封装用于文件打开操作或文件保存操作的常见对话框。信息来源自Windows官方文档&#xff1a;https://learn.microsoft.com/zh-cn/cpp/mfc/reference/cfiledialog-class?viewmsvc-170 这里重点介绍几个常用的函数功能&#xff1a; 构造函数 explic…

当我在ChatGPT上问重建大师,它居然这样回答我

最近&#xff0c;ChatGPT风靡全球&#xff0c;现象级走红至各大社交媒体。作为最快突破1亿月活量的消费者应用&#xff0c;是怎么样理解重建大师的呢&#xff1f; 今天小编与ChatGPT展开对话&#xff0c;它告诉我&#xff1a; 短短不到一分钟时间&#xff0c;ChatGPT已经概括出…

Grafana 监控面板绘制流程

本篇作者&#xff1a;IoTDB 社区 -- 张洪胤本文以 IoTDB V1.0.1 版本为例本文档介绍了 Apache IoTDB 监控指标通过 Prometheus 的方式进行采集&#xff0c;并且使用 Grafana 的方式进行可视化。1监控指标的 Prometheus 格式说明对于 Metric Name 为 name, Tags 为 K1V1, ..., K…

ABB机器人Offs坐标偏移功能的具体使用方法

ABB机器人Offs坐标偏移功能的具体使用方法 Offs功能说明: 在机器人的工件坐标系中添加一个偏移量 举例说明: 参数及数据类型: 在RobotStudio的仿真操作: 如下图所示,在程序中添加一个移动指令,并记录该点位为p10, 如下图所示,复制该指令语句, 如下图所示,选中…

Qt音视频开发22-音频播放QAudioOutput

一、前言 以前一直以为只有Qt5以后才有QAudioOutput播放音频&#xff0c;其实从Qt4.6开始就有&#xff0c;在Qt6中变成了QAudioSink&#xff0c;功能一样。用QAudioOutput播放音频pcm数据极其方便&#xff0c;只需要指定音频播放设备&#xff08;可能电脑上有多个音频输出设备…

力扣sql简单篇练习(二十六)

力扣sql简单篇练习(二十六) 1 每家商店的产品价格 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 多行变成多列,考虑用sum if分组 SELECT product_id,sum(IF(storestore1,price,null)) store1,sum(IF(storestore2,price,null)) store2, sum(IF(st…

mmdetectionV2.x版本 训练自己的VOC数据集

mmdetection目录下创建data文件夹&#xff0c;路劲如图所示&#xff0c;不带yololabels 修改配置文件 mmdet/datasets/voc.py 配置图片格式 mmdet/datasets/xml_style.py 如果图片是jpg则改成jpg&#xff0c;是png格式就改成png&#xff0c;这里我不需要改&#xff0c;本…

C++11:包装器

文章目录1. 介绍2. function包装器2.1 介绍2.2 示例1用法2.3 示例22.4 function包装器的功能统一类型简化代码2.5 意义3. bind包装器3.1 介绍3.2 bind包装器的功能绑定固定参数3.3 意义1. 介绍 C 包装器是一种用于给其他编程接口提供更一致或更合适的接口的技术。它可以包装任…

人工智能书籍——《奇点临近》

当人们看到太多相同的时候&#xff0c;也许我们很无知&#xff1b; 当人们看到太多不同的时候&#xff0c;也许我们视野不够大&#xff1b; 当人们同时看到不同和相同的时候&#xff0c;也许这恰是我们的智慧原点。 物质是静止的能量&#xff0c;能量是运动的物质&#xff0c;生…

04 HiveHBase

Hive 一 Hive基本概念 1 Hive简介 学习目标 了解什么是Hive了解为什么使用Hive 1.1 什么是 Hive Hive 由 Facebook 实现并开源&#xff0c;是基于 Hadoop 的一个数据仓库工具&#xff0c;可以将结构化的数据映射为一张数据库表&#xff0c;并提供 HQL(Hive SQL)查询功能&…

05 Spark_Core

01 spark 入门 课程目标&#xff1a; 了解spark概念知道spark的特点&#xff08;与hadoop对比&#xff09;独立实现spark local模式的启动 1.1 spark概述 1、什么是spark 基于内存的计算引擎&#xff0c;它的计算速度非常快。但是仅仅只涉及到数据的计算&#xff0c;并没有涉…

【5】基础语法篇 - VL5 位拆分与运算

VL5 位拆分与运算 1 自己犯的错误 &#xff08;1&#xff09;语法错误 在begin end块 后面加了" ; " case(sel)2b00: begin validout<0; out<0; end;2b01: begin validout<1; out<d0 d1; end;2b10: begin validout<1; out<d0 d2; end;2b11: be…

分享几个常用的运维 shell 脚本

今天咸鱼给大家分享几个不错的 Linux 运维脚本&#xff0c;这些脚本中大量使用了 Linux 的文本三剑客&#xff1a; awkgrepsed 建议大家这三个工具都要了解并最好能够较为熟练的使用 根据 PID 显示进程所有信息 根据用户输入的PID&#xff0c;过滤出该PID所有的信息 #! /b…

MySQL(三)SQL优化

SQL优化插入数据大批量数据插入主键优化order by优化group by优化limit优化count优化update优化插入数据 需要一次性往数据库表中插入多条记录&#xff0c;可以从以下三个方面进行优化 insert into tb_test values(1,tom); insert into tb_test values(2,cat); insert into t…

Salesforce 2023财年逆风增长,现金流达历史最高!

在过去的一年里&#xff0c;Salesforce一直是华尔街最关注的公司之一。3月1日&#xff0c;CRM领域的全球领导者Salesforce公布了截至2023年1月31日的第四季度和整个财年的业绩。 Salesforce主席兼首席执行官Marc Benioff表示&#xff1a; Salesforce全年实现了314亿美元的收入…

【备战面试】每日10道面试题打卡-Day6

本篇总结的是计算机网络知识相关的面试题&#xff0c;后续也会更新其他相关内容 文章目录1、HTTP 与 HTTPS 有哪些区别&#xff1f;2、HTTPS的加密过程是什么&#xff1f;3、GET与POST有什么区别&#xff1f;4、讲讲HTTP各个版本的区别&#xff1f;5、HTTP与FTP的区别&#xff…

【C++、C++11】可变参数模板、lambda表达式、包装器

文章目录&#x1f4d6; 前言1. 可变参数模板1.1 万能模板&#xff1a;1.2 完美转发&#xff1a;1.3 可变参数模板的使用&#xff1a;1.4 emplace_back&#xff1a;2. lambda表达式2.1 lambda表达式的定义&#xff1a;2.2 lambda表达式的用法&#xff1a;2.2 - 1 捕捉列表的用法…

manacher算法详解

例题 求一个字符串的最长回文子串的长度 O(N2)O(N^2)O(N2)的解法很容易想&#xff0c;就是从每个字符位置向左右同时拓展&#xff0c;然后检查当前是不是回文&#xff0c;更新长度&#xff0c;可以简单写一下代码 int solve(string &ss){int ans 0;int n ss.length();s…

从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具

从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具 文章目录1. 神经网络数据预处理1.1 常规预测情景1.2 文本预测场景2.全连接神经网络 DNN3.卷积神经网络CNN4.循环神经网络 RNN5.长短期记忆神经网络 LSTMʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔ…