【笔试训练】day12

news2024/11/28 2:51:15

1.牛牛冲砖五

思路:

看懂样例即可。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    string str;
    while (t--) {
        int n, k;
        cin >> n >> k >> str;
        int ans = 0;
        for (int i = 0; i < n; i++) {
            if (str[i] == 'L')ans--;
            else {
                if (i >= 2 && str[i] == str[i - 1] && str[i] == str[i - 2]) {
                    ans += k;
                }
                else ans++;
            }
        }
        cout << ans << endl;
    }
}

 2.最长无重复子数组

思路:

最古老的双指针。用两个指针维护一个没有重复元素的区间,基于计数。如果新加进来的一个元素导致了出现重复元素,那么我们就收紧左区间,直到没有重复元素为止。

代码:

class Solution {
public:

    int maxLength(vector<int>& arr) {
        unordered_map<int,int> mp;
        int ans=1;
        for(int i=0,j=0;i<arr.size();i++){
            mp[arr[i]]++;
            while(j<=i&&mp[arr[i]]>=2){
                mp[arr[j]]--;
                j++;
            }
            ans=max(ans,i-j+1);
        }
        return ans;
    }
};

3.重排字符串

思路:

基于贪心重构字符串。为了让字符串中的每个元素都“平均”的出现,我们可以每次然出现次数最多的字符和次多的字符去“凑成”一对。为什么要尽量把出现次数多的凑成一对呢?因为这些字符最危险,越是靠后处理这些字符,越容易出现相邻重复。用一个堆去维护当前每个字符出现的次数,当堆的元素大于1的时候,我们就可以取出最多的两个字符,这两个字符一定不同,我们把这两个字符依次加入到答案中。

如果最后堆的元素为空,说明正好处理完了。如果最后堆顶元素还剩下1,说明还有一种字符还没被“安排”。如果最后这个字符的次数还剩下超过1,那么说明一定会相邻。如果最后还剩一个元素,直接加到ans末尾就行了。

代码:

#include <iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef pair<int, int> PII;
int main() {
    int n;
    string str;
    int a[26] = {0};
    priority_queue<PII> q;
    cin >> n >> str;
    if (n == 1) {
        cout << "yes" << endl;
        cout << str << endl;
        return 0;
    }

    for (int i = 0; i < n; i++) {
        int u = str[i] - 'a';
        a[u]++;
    }

 
    for (int i = 0; i < 26; i++) {
        if (a[i])q.push({ a[i], i });
    }

    string ans = "";
    while (q.size() > 1) {
        auto t1 = q.top();
        q.pop();
        auto t2 = q.top();
        q.pop();
        char u1 = t1.second + 'a';
        char u2 = t2.second + 'a';

        ans += u1;
        ans += u2;
        if (t1.first - 1 > 0)q.push({ t1.first - 1, u1 - 'a' });
        if (t2.first - 1 > 0)q.push({ t2.first - 1, u2 - 'a' });
    }

    if (!q.empty() && q.top().first >= 2) {
        cout << "no" << endl;
    } else {
        if (!q.empty()) {
            char u = q.top().second + 'a';
            ans += u;
        }
    }
     cout << "yes" << endl;
     cout << ans << endl;


}
// 64 位输出请用 printf("%lld")

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

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

相关文章

鸿蒙OpenHarmony【小型系统 烧录】(基于Hi3516开发板)

烧录 针对Hi3516DV300开发板&#xff0c;除了DevEco Device Tool&#xff08;操作方法请参考烧录)&#xff09;外&#xff0c;还可以使用HiTool进行烧录。 前提条件 开发板相关源码已编译完成&#xff0c;已形成烧录文件。客户端&#xff08;操作平台&#xff0c;例如Window…

微软开源了 MS-DOS 4.00

DOS的历史源远流长&#xff0c;很多现在的年轻人不知道DOS了。其实早期的windows可以看做是基于DOS的窗口界面的模拟器&#xff0c;系统的本质其实是DOS。后来DOS的漏洞还是太多了&#xff0c;微软重新写了windows的底层内核。DOS只是一个辅助终端的形式予以保留了。 微软是在…

FTP 文件传输协议

FTP 文件传输协议 作用 用来传输文件的 FTP协议采用的是TCP作为传输协议&#xff0c; 21号端口用来传输FTP控制命令的&#xff0c; 20号端口用来传输文件数据的 FTP传输模式&#xff1a; 主动模式&#xff1a; FTP服务端接收下载控制命令后&#xff0c;会主动从tcp/20号端口…

pyaibote--安卓自动化环境配置与基础的使用方法

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 pyaibote介绍 pyaibote是一个全新&#xff0c;强大的办公自动化库。 支持找图&#xff0c;识别像素等操作。 比appium快十倍。 文章介绍 有大佬给我提到这个库后&#xff0c;我来查看。然后发现这个库太新了&am…

自然语言处理 (NLP) 中的迁移学习

--懂王 在大数据高速发展的时代&#xff0c;AI的发展日新月异&#xff0c;充满挑战的迎接未来。 自然语言处理 (NLP) 中的迁移学习: 迁移学习在 NLP 中越来越受欢迎&#xff0c;特别是在数据稀缺的情况下。如何有效地利用预训练的语言模型&#xff0c;并将其迁移到新的任务和领…

windows驱动开发-中断(一)

中断是windows中最难的一部分&#xff0c;这是因为中断本身属于操作系统的一部分&#xff0c;理解了中断和内存&#xff0c;对整个系统也就了解了。 中断部分会先从中断优先级、中断处理、中断服务例程入手&#xff0c;大概讲述一下中断的概念&#xff1b;接着从中断的一般实现…

如何买到“30元以下”的免备案服务器?

对于预算有限的个人和小型企业来说&#xff0c;30 元以下免备案服务器的价格非常亲民。用户可以以极低的成本获得所需的服务器资源&#xff0c;这对创业者、个人开发者、学生和站长来说简直不要太划算&#xff0c;毕竟配置可以升级真不够后面再付费升级也行。 何为“免备案”&…

ROS1快速入门学习笔记 - 07话题消息的定义与使用

目录 一、话题模型 二、自定义话题消息 1. 在功能包下创建msg目录用于存储话题文件 2. 在package.xml文件中添加功能包依赖&#xff1b; 3. 在CMakeLists.txt增加编译选项&#xff1b; 4. 完成编译 5. 配置CMakeLists.txt中的编译规则&#xff08;增加发布者和订阅者&am…

Meta Llama 3 性能提升与推理服务部署

利用 NVIDIA TensorRT-LLM 和 NVIDIA Triton 推理服务器提升 Meta Llama 3 性能 我们很高兴地宣布 NVIDIA TensorRT-LLM 支持 Meta Llama 3 系列模型&#xff0c;从而加速和优化您的 LLM 推理性能。 您可以通过浏览器用户界面立即试用 Llama 3 8B 和 Llama 3 70B&#xff08;该…

卫浴品牌商家做展示预约小程序的作用是什么

卫浴品牌类别多、普通/智能、场景化等&#xff0c;无论企业还是经销商市场门店都比较饱满&#xff0c;虽然市场需求度高&#xff0c;但同样需要商家不断拓宽销售渠道和挖掘客户价值&#xff0c;破圈增长。 线上多平台发展尤为重要&#xff0c;而小程序作为连接点&#xff0c;对…

深度学习模型的优化和调优de了解

深度学习模型的优化和调优&#xff1a;随着深度学习应用的广泛&#xff0c;优化和调优神经网络模型成为了一个重要的问题。这包括选择合适的网络架构、调整超参数、应对过拟合等。 深度学习模型的优化和调优是指在训练神经网络模型时&#xff0c;通过一系列技术和方法来提高模型…

无缝迁移:从阿里云WAF到AWS的成功转变之路

在当今数字化浪潮中&#xff0c;网络安全已经成为企业发展的重要组成部分。阿里云WAF&#xff08;Web 应用防火墙&#xff09;作为一种重要的网络安全解决方案&#xff0c;帮助企业保护其 Web 应用免受各种网络攻击。 然而&#xff0c;随着企业业务的扩展和需求的变化&#xf…

SA模拟退火算法优化高斯回归回归预测matlab代码

SA高斯回归回归预测matlab代码 模拟退火算法&#xff08;Simulated Annealing&#xff0c;简称SA&#xff09;是一种用于解决优化问题的启发式算法。它受到固体退火过程中温度逐渐降低的启发&#xff0c;通过随机性的搜索和接受劣解的策略&#xff0c;来在复杂的搜索空间中寻找…

JAVA读取从WPS在Excel中嵌入的图片资源

读取从WPS在Excel中嵌入的图片资源 引言 许多数据文件中可能包含嵌入式图片&#xff0c;这些图片对于数据分析和可视化非常重要。然而&#xff0c;从 WPS 在 Excel 中读取这些图片可能会有一些技术挑战。在本文中&#xff0c;我将展示如何从 WPS Excel 文件中读取嵌入的图片&am…

618科技嘉年华!五款极致科技产品,开启智能生活新篇章!

准备好迎接一年一度的618了吗&#xff1f;这不仅仅是一场购物的狂欢&#xff0c;更是一次科技的盛宴&#xff0c;一次智能生活的全新启航。今年&#xff0c;我们将带来五款令人瞩目的极致科技产品&#xff0c;它们将彻底颠覆你对智能生活的认知。从娱乐到工作&#xff0c;这些产…

逆向案例三十——webpack登录某游戏

网址&#xff1a;aHR0cHM6Ly93d3cuZ205OS5jb20v 步骤&#xff1a; 进行抓包分析&#xff0c;找到登录接口&#xff0c;发现密码有加密 跟栈分析&#xff0c;从第三个栈进入&#xff0c;打上断点&#xff0c;再次点击登录 明显找到password,它由o赋值&#xff0c;o由a.encode(…

RAGFlow:安装与体验

服务器需要有docker,或者直接访问官方提供的demo: https://demo.ragflow.io/ docker-compose安装 需要确保 vm.max_map_count 不小于 262144 【更多】:sysctl -w vm.max_map_count=262144 克隆仓库:$ git clone https://github.com/infiniflow/ragflow.git 进入 doc…

基于3D机器视觉的注塑缺陷检测解决方案

注塑检测是对注塑生产过程中的产品缺陷进行识别和检测的过程。这些缺陷可能包括色差、料流痕、黑点&#xff08;包括杂质&#xff09;等&#xff0c;它们可能是由多种因素引起&#xff0c;如原料未搅拌均匀、烘料时间过长、工业温度局部偏高、模具等问题造成的。不仅影响产品的…

STM32 SPI通信

一、SPI总线简介 1.1 SPI总线 串口外设接口&#xff08;Serial Peripheral Interface&#xff0c;SPI&#xff09;总线是一种同步串行外设接口&#xff0c;允许MCU与各种外围设备进行全双工、同步串行通信 SPI总线有四根通信线&#xff1a; ①SCK&#xff08;Serial Clock&a…

神经网络:手写数字图像识别

一、导入相关库函数 import matplotlib.pyplot as plt import tensorflow as tf import keras import numpy as np 二、载入mnist数据集 使用keras.中的mnist数据集 (train_images, train_labels), (test_images, test_labels)\ keras.datasets.mnist.load_data() 三、测…