2023/04/24 ~ 25 刷题记录

news2024/11/28 4:47:37

 A - Sort the Subarray

大致题义:Monocarp有一个包含n个整数的数组a。他决定选择两个整数l和r,使1< 2rn,然后对子数组进行排序。子数组a[1 ..]R]是数组a中包含元素a1, al+1, al+2,…的部分。, ar-1, ar)按非降序排列。在对子数组进行排序之后,Monocarp获得了一个新的数组,我们用'表示。例如,如果a =[6,7,3,4,4,4,6,5],并且Monocarp选择了l = 2,r = 5,那么a' =[6,3,4,4,7,6,5]。已知数组a和a'找出Monocarp可能选择的整数l和r。如果有多对值(l,r),找到与最长子数组对应的值。

题解:找到不同的元素的位置并向左右两边寻找边界。输出边界。

import java.util.Scanner;

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

        int t = sc.nextInt();
        while (t-- != 0) {
            int tempL = -1, l = -1, tempR = -1, r = -1;

            int len = sc.nextInt();
            int[] a = new int[len];
            int[] b = new int[len];
            // 输入A数组
            for (int i = 0; i < len; i++) {
                a[i] = sc.nextInt();
            }
            for (int i = 0; i < len; i++) {
                b[i] = sc.nextInt();
                // 获取范围最小的边界
                if (a[i] != b[i])
                    if (l == -1)
                        l = i;
                    else
                        r = i;
            }

            // 从边界出发,寻找真正边界
            while (l > 0) {
                if (b[l-1] <= b[l])
                    l --;
                else
                    break;
            }
            while (r + 1 < len) {
                if (b[r] <= b[r+1])
                    r ++;
                else
                    break;
            }
            
            // 打印序号,下标要加一
            System.out.println(++l + " " + ++r);
        }
    }
}

B - Tear It Apart

 大致题义:

给你一个字符串 s,由小写拉丁字母组成。

在一个操作中,可以选择其中的多个(一个或多个)位置,以便没有两个选定的位置彼此相邻。然后,从字符串中删除所选位置上的字母。生成的零件在不更改其顺序的情况下连接。

制作所有字母所需的最小操作数是多少 一样?

题解:

        贪心思想。将 26 个字母都算一遍,求最小值。因为消除的字符不能连续,也就是天然的将每种字符分隔。然后目标就是消除分隔内的字符串,求得最小的消除次数。每次操作只需要算出每段区间中最长的区间,设区间长度为len,最少需要的操作次数为1 + log2^len。Java中没有以2为底的log,所以需要用到换底公式。

import java.util.ArrayList;
import java.util.Scanner;

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

        int t = sc.nextInt();
        sc.nextLine();
        while (t-- != 0) {
            ArrayList<ArrayList<Integer>> arrayLists = new ArrayList<>();
            for (int i = 0; i < 26; i++) {
                arrayLists.add(new ArrayList<>());
            }

            String s = sc.nextLine();
            StringBuilder stringBuilder = new StringBuilder(s);
            for (int i = 0; i < stringBuilder.length(); i++) {
                char c = stringBuilder.charAt(i);

                arrayLists.get(c - 'a').add(i);
            }

            int ans = 1 << 30;
            for (int i = 0; i < 26; i++) {
                ArrayList<Integer> integers = arrayLists.get(i);
                // 边界 用于判断最后一个对呀的字母到边界有多少字母
                integers.add(stringBuilder.length());

                int temp = -1, m = 0;

                for (Integer integer : integers) {
                    m = (int) Math.max(m, Math.log(integer - temp - 1) / Math.log(2) + 1);

                    temp = integer;
                }

                ans = Math.min(ans, m);
            }

            System.out.println(ans);
        }
    }
}

C - Yura's New Name

大致题义:

在举办了一次团体比赛后,男孩Yura非常疲惫,想改变自己的生活,搬到日本。为了纪念这样的变化,尤拉将他的名字改成了好听的名字。
被这个想法迷住了,他已经想出了一个名字。s仅由字符“”和(“^”组成。但有一个问题――尤拉喜欢笑脸“A八)1和“^^”。因此,该名称的任何字符都必须是至少一个此类笑脸的一部分。请注意,只有名称的连续字符才能是笑脸。
更正式地说,考虑字符串中字符串“^_^"和“^^”的所有匹配项s.那么所有这些事件都必须覆盖整个字符串s,可能与交叉点。例如,在字符串fA_1M_A_^”中,位置的字符3,4,9,10和11不包含在任何笑脸中,其他角色在位置1,2,5,6,7和8包含在笑脸内。
在一个操作中,Jura可以在他的名字中插入一个字符“_”和"”s(您可以将其插入字符串中的任何位置)。他要求你告诉他你需要做的最少操作次数,以使这个名字符合尤拉的标准。

题解:

        如注释


import java.util.Scanner;

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

        int t = sc.nextInt();
        sc.nextLine();
        while (t-- != 0) {
            String s = sc.nextLine();

            char[] chars = s.toCharArray();

            int ans = 0;

            // 必须以 '^' 开头
            if (chars[0] != '^')
                ans ++;

            // 碰到了连续两个 '_' 则插入一个 '^'
            for (int i = 0; i < chars.length - 1; i++) {
                if (chars[i] == '_' && chars[i+1] != '^')
                    ans ++;
            }

            // 如果最后一个字符为'_',则需要在最后插入 '^'
            // 最后一个字符为 '^',则只要前面有字符就可以组成“笑脸”
            if (chars[chars.length-1] == '_')
                ans ++;
            // 考虑特殊情况,长度为 1,且为'^'
            else if (chars.length == 1)
                ans ++;

            System.out.println(ans);
        }
    }
}

F - Li Hua and Maze

 水题一道~

import java.util.Scanner;

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

        int t = sc.nextInt();
        sc.nextLine();
        while (t-- != 0) {
            int n = sc.nextInt();
            int m = sc.nextInt();
            int x1 = sc.nextInt();
            int y1 = sc.nextInt();
            int x2 = sc.nextInt();
            int y2 = sc.nextInt();

            System.out.println(Math.min(fun(n, m, x1, y1), fun(n, m, x2, y2)));
        }
    }

    static int fun(int n, int m, int x, int y) {
        if (x == 1 || x == n) {
            if (y == 1 || y == m)
                return 2;
            return 3;
        }

        if (y == 1 || y == m) {
            return 3;
        }

        return 4;
    }
}

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

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

相关文章

【STM32】知识补充 锁相环原理与应用解析

【STM32】知识补充 锁相环原理与应用解析 概述什么是锁相环 (PPL)锁相环的基本组成锁相环的工作原理锁相环应用STM32 中锁相环的应用STM32 配置锁相环总结 概述 锁相环 (Phase-Locked Loop) 在现代电子与通信系统中, 扮演着至关重要的角色. 凭借其独特的同步和频率调整能力, 锁…

大数据Doris(七):BE扩缩容

文章目录 BE扩缩容 一、BE扩容(创建BE与FE关系) 二、BE缩容 三、BE扩缩容注意问题

【操作系统复习】第5章 存储器管理 2

分页存储管理方式 页号P ◆12-31位&#xff1a;20位 ◆地址空间最多允许有1M&#xff08;2 20&#xff09;页 位移量W&#xff08;页内地址&#xff09; ◆0-11&#xff1a;12位 ◆每页大小为4KB &#xff08;2 12&#xff09; 对某特定机器&#xff0c;地址结构是一…

LangChain 2 ONgDB:大模型+知识图谱实现领域知识问答

LangChain 2 ONgDB&#xff1a;大模型知识图谱实现领域知识问答 LangChain 2 ONgDB&#xff1a;大模型知识图谱实现领域知识问答系统截图LangChain代理流程 Here’s the table of contents: LangChain 2 ONgDB&#xff1a;大模型知识图谱实现领域知识问答 LangChain 是一种 LL…

社区团购小程序怎么做,全流程解析

在当前的电商市场中&#xff0c;社区团购已经成为了一股强劲的力量。社区团购小程序作为社区团购的重要组成部分&#xff0c;已经成为了商家和消费者不可或缺的工具。社区团购小程序以其方便、快捷、实惠的特点&#xff0c;受到越来越多的用户的青睐&#xff0c;成为了电商市场…

只需5分钟,深刻理解本地事务状态表方案|分布式事务系列(四)

之前我们已经讲过了最基础的CAP、BASE理论&#xff0c;然后介绍了强一致性方案XA、2PC和3PC&#xff0c;然后详细讲述了TCC在生产中的应用场景和原理。本文继续讲解最终一致性方案——本地事务状态表方案。 点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c;…

Go基础篇:类型系统

目录 前言✨一、什么是类型&#xff1f;二、类型特性1、静态类型检查2、类型推断 三、类型别名和自定义类型1、类型别名2、自定义类型3、类型别名和自定义类型的区别 四、类型底层结构1、类型元数据2、其他描述信息3、uncommontype 五、小结 前言✨ 前段时间忙着春招面试&#…

JDK1.8下载、安装和环境配置教程

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f9be;&#x1f9be;​​​​​​​ 目录 window系统安装java 下载JDK 配置环境变量 …

算法记录 | Day45 动态规划

70.爬楼梯 &#xff08;进阶&#xff09; 改为&#xff1a;一步一个台阶&#xff0c;两个台阶&#xff0c;三个台阶&#xff0c;…&#xff0c;直到 m个台阶。问有多少种不同的方法可以爬到楼顶呢&#xff1f; 1阶&#xff0c;2阶&#xff0c;… m阶就是物品&#xff0c;楼顶…

文件的使用

文章目录 1.概念1.1定义&#xff1a;1.2分类1.3文件名 2.文件的使用2.1文件指针2.2开闭函数2.3顺序读写2.3.1何为读写2.3.2读写函数1.字符输出fputc&#xff08;输出到文件 写到文件中&#xff09;2.字符输入fgetc&#xff08;输入到程序 读到程序中&#xff09;3.文本行函数4.…

别争了,Excel和Access都靠边,WPS也退,划时代电子表格早已出现

电子表格&#xff0c;绝不仅仅只是你看到的样子&#xff01; 无论是Excel&#xff0c;还是与它抗衡30多年&#xff0c;不分上下的金山WPS&#xff0c;都没能开创出真正划时代意义的电子表格。 揭秘前让我们先简单回顾下电子表格的前世今生&#xff0c;等不及的可直接进度条下拉…

超写实虚拟人制作教程

最近突然吹起一阵虚拟人直播风潮&#xff0c;大概就是找一个虚拟人物&#xff0c;用主播的面部动作来驱动虚拟人来完成头部和表情动作&#xff0c;但我看大部分都是下载的UE5Unreal Eigine 5&#xff08;Epic公司出品的一款强大的3D创作平台&#xff0c;很多大型3A大作都是用其…

google.common的guava依赖的partition分割产生的浅拷贝问题解决方案

google.common的guava依赖的partition分割产生的浅拷贝问题解决方案 问题背景解决方案Lyric&#xff1a; 说你不爱我 问题背景 使用google.common的guava依赖的partition分割产生的浅拷贝问题&#xff0c;如: 把userList集合分割成每个10000的小集合 List<List> partiti…

vue+gin—— GetcharZp

vuegin—— GetcharZp vuegin—— GetcharZpP1-项目介绍【03:51】P2-项目梳理【29:59】problemusercategorysubmit P3-环境搭建【05:27】P4-整合GIN、GORM【16:20】P5-整合 Swagger【10:01】P6-接口-问题列表【19:34】P7-接口-问题详情【24:06】P8-接口-用户详情【05:36】P9-接…

C++菱形继承(再剖析)

当子类对象给父类对象的时候&#xff0c;怎么找公共的虚基类&#xff08;A&#xff09; 就得通过偏移量来算虚基类的位置 ---------------------------------------------------------------------------------------------------------------------------- 我们来分析一下B…

DBi-Tech Studio Controls 1.6 for .NET Crack

Studio Controls for .NET 为 Windows 开发人员提供了 18 个 .NET 控件&#xff0c;用于 Outlook 风格的调度到管理单元报告、Windows 应用程序导航到现代 UI 设计演示以实现自然的最终用户功能。 Appointment Scheduling、Time Tabling、Day Timer ... 应…

【Unity入门】20.三维向量

【Unity入门】三维向量 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;空间向量 &#xff08;1&#xff09;什么是三维向量 为什么会有这么一篇博客呢&#xff1f;主要是三维向量在unity中…

[Redis] 数据结构zset压缩列表实现和跳表实现讲解

&#x1f61a;一个不甘平凡的普通人&#xff0c;致力于为Golang社区和算法学习做出贡献&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;算法学习 &am…

多级缓存建设方案

项目背景 xx系统中对容量和耗时有较高要求&#xff0c;以支付优惠立减为例&#xff0c;每个用户咨询可用立减时&#xff0c;都会过一遍全量生效活动。目前日常活动数3000&#xff0c;目标2w&#xff1b;日常秒级咨询量1w&#xff0c;大促22w。所以如何支撑日常和大促的业务非常…

Unity利用UGUI RawImage组件制作转场动画

Unity利用UGUI RawImage组件制作转场动画 最近接到了一个unity全景图的小项目&#xff0c;由于在不同的场景之间转场时直接转会太过生硬&#xff0c;因此要求有个Alpha转场的动画。于是想到两种可行的方案&#xff1a; 一、UGUI方案 用UGUI显示当前屏幕纹理&#xff0c;然后…