刷题记录(2023-08-12)

news2024/11/25 19:37:26

1. 小美的排列询问

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AC代码:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> nums(n);
    int a, b;
    for (int i = 0; i < n; i++) {
        cin >> nums[i];
    }
    cin >> a >> b;
    for (int i = 0; i < n; i++) {
        if (nums[i] == a) {
            if (i - 1 > 0 && nums[i - 1] == b) {
                cout << "Yes";
                return 0;
            }
            if (i + 1 < n && nums[i + 1] == b) {
                cout << "Yes";
                return 0;
            }
        }
    }
    cout << "No";
    return 0;
}
// 64 位输出请用 printf("%lld")

在这里插入图片描述

2. 小美走公路

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
AC代码:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> lenRoad(n);
    for (int i = 0; i < n; i++) {
        cin >> lenRoad[i];
    }
    int x, y;
    cin >> x >> y;
    if (x > y) {
        swap(x, y);
    }
    long len1 = 0;
    long sumLen = 0;
    for (int i = 0; i < n; i++) {
        sumLen += lenRoad[i];
        if (i >= x - 1 && i < y - 1) {
            len1 += lenRoad[i];
        }
    }
    long len2 = sumLen - len1;
    cout << min(len1, len2);

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

在这里插入图片描述

3. 小美的蛋糕切割

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    vector<vector<int>> cakes(n, vector<int>(m));

    vector<int> rows(n);
    vector<int> cols(m);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> cakes[i][j];
            rows[i] += cakes[i][j];
            cols[j] += cakes[i][j];
        }
    }

    for (int i = 1; i < n; i++) {
        rows[i] += rows[i - 1];
    }

    for (int j = 1; j < m; j++) {
        cols[j] += cols[j - 1];
    }

    int minVal1 = 0x3f3f3f3f;
    for (int i = 0; i < n - 1; i++) {
        int disVal = abs(rows[n - 1] - rows[i] - rows[i]);
        if (minVal1 > disVal) {
            minVal1 = disVal;
        }
        // else{
        //     break;
        // }
    }

    int minVal2 = 0x3f3f3f3f;
    for (int j = 0; j < m - 1; j++) {
        int disVal = abs(cols[m - 1] - cols[j] - cols[j]);
        if (minVal2 > disVal) {
            minVal2 = disVal;
        }
        // else{
        //     break;
        // }
    }

    cout << min(minVal1, minVal2);
    return 0;
}
// 64 位输出请用 printf("%lld")

有用例没过:

在这里插入图片描述

4. 小美的字符串变换

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#include <iostream>
#include <string>
#include <vector>
using namespace std;

class UFSets {
public:
    vector<int> vec;

    UFSets(int sz) {
        vec = vector<int>(sz, -1);
    }

    int Find(int x) {
        while (vec[x] > 0)x = vec[x];
        return x;
    }

    bool Union(int root1, int root2) {
        int r1 = Find(root1);
        int r2 = Find(root2);
        if (r1 == r2) {
            return false;
        }
        if (vec[r1] < vec[r2]) {
            vec[r2] = vec[r1] + vec[r2];
            vec[r1] = r2;
        }
        else {
            vec[r1] = vec[r1] + vec[r2];
            vec[r2] = r1;
        }
        return true;
    }
};

int main() {
    int n;
    cin >> n;
    string str;
    cin >> str;
    int minNumSets = 0x3f3f3f3f;
    // x=1 与 y=1效果一致,因此y直接从2开始就好了
    for (int x = 1; x < n / 2; x++) {
        if (n % x == 0) {
            int y = n / x;
            UFSets ufs(n);
            for (int i = 0; i < n; i++) {
                int posX = i / y;
                int posY = i % y;
                // 上边
                if (posX - 1 >= 0 && str[(posX-1)*x+posY] == str[i]) {
                    // 合并
                    ufs.Union((posX - 1) * x + posY, i);
                }
                // 左边
                if (posY - 1 >= 0 && str[posX * x + posY - 1] == str[i]) {
                    // 合并
                    ufs.Union(posX * x + posY - 1, i);
                }
            }
            // 检查ufs中的集合数量
            int numSets = 0;
            for (int i = 0; i < ufs.vec.size(); i++) {
                if (ufs.vec[i] < 0) {
                    numSets++;
                }
            }
            if (numSets < minNumSets) {
                minNumSets = numSets;
            }
        }
    }

    cout << minNumSets;
    return 0;
}
// 64 位输出请用 printf("%lld")

这个边界条件有点问题,后来改了,但也只过了20% = =

在这里插入图片描述

5. 小美的树上染色

在这里插入图片描述

在这里插入图片描述

#include <iostream>
#include <vector>
#include <math.h>
using namespace std;

struct Node {
    int val;
    bool color;
};

int main() {
    int n;
    cin >> n;
    vector<Node> nodes(n);
    for (int i = 0; i < n; i++) {
        cin >> nodes[i].val;
        nodes[i].color = false;
    }
    int a, b;
    int res = 0;
    for (int i = 0; i < n - 1; i++) {
        cin >> a >> b;
        if (!nodes[a].color && !nodes[b].color) { // 两个节点都是白色
            int sq = sqrt(nodes[a].val * nodes[b].val);
            if (sq * sq == nodes[a].val * nodes[b].val) {
                res += 2;
                nodes[a].color = true;
                nodes[b].color = true;
            }
        }
    }
    cout << res;
}
// 64 位输出请用 printf("%lld")

只过了10%

在这里插入图片描述

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

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

相关文章

javaScript:for循环的认识与使用,以及奇葩for循环

目录 前言 基本的 for 循环通常有三个关键组成部分 一.javaScript中的循环都有那些&#xff08;补充&#xff09; 二.for循环​ 语法/理解​ 执行过程&#xff08;重点&#xff09;​ 注意 三. 基本for循环小练习 1.求1-100的偶数和&#xff0c;包含1和100 2.求1-100中…

DOM的节点操作+事件高级+DOM事件流+事件对象

一.节点操作 1.父节点: node.parentNode 得到的是离元素最近的父级节点 2.子节点: parentNode.childNodes 所有的子节点 包含元素节点 文本节点等等parentNode.children (非标准) 获取所有的子元素节点,实际开发常用 parentNode.firstChild 获取…

JAVA基础补充(Comparable排序接口的实现)

JAVA基础补充&#xff08;Comparable排序接口的实现&#xff09; Comparable接口的实现&#xff1a;没有实现Comparable接口时&#xff0c;取出来的值无法排序如果进行排序&#xff1a;实现接口进行排序&#xff1a;Controller层的实现实体类的实现 复习时间&#xff1a;2023/0…

Spring Cloud面试突击班1

Spring Cloud面试突击班1 1.Spring Cloud 中有哪些组件&#xff0c;整个项目架构中我们的重点又有哪些&#xff1f; Spring Cloud 是一套基于Spring Boot的微服务解决方案。 Spring Cloud生态在国内主流的分为两套&#xff0c;一套是以奈飞开源的Spring Cloud Netfilx 20%&a…

Fiddler抓包工具详细使用教程

各位做测试的同学想必对抓包工具fiddler并不陌生&#xff0c;但是很多同学可能没有总结过它的用法&#xff0c;下面我总结了fiddler一些常用的用法。 Web端抓包配置 打开Fiddler&#xff0c;Tools -> Fiddler Options -> HTTPS 配置完后记得要重启Fiddler 选中Decrpt …

阿里云服务器搭建WordPress建站教程基于Windows系统

本教程是使用阿里云服务器镜像系统选择的是Windows操作系统&#xff0c;手动安装WordPress博客网站全过程。本教程介绍如何在Windows操作系统的ECS实例上搭建WordPress网站。 目录 准备工作 搭建WordPress网站 解析WordPress网站域名 准备工作 创建Windows操作系统的ECS实…

OpenCV实例(八)车牌字符识别技术(三)汉字识别

车牌字符识别技术&#xff08;三&#xff09;汉字识别 1.代码实例2.遇到问题3.汉字识别代码实例 相较于数字和英文字符的识别&#xff0c;汽车牌照中的汉字字符识别的难度更大&#xff0c;主要原因有以下4个方面&#xff1a; (1)字符笔画因切分误差导致非笔画或笔画流失。 (2…

VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR

文章目录 VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIORABSTRACT1 INTRODUCTION2 COMPRESSION WITH VARIATIONAL MODELS3 INTRODUCTION OF A SCALE HYPERPRIOR 个人总结动机流程思路 VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR ABSTRACT We describe …

【单片机】DS2431,STM32,EEPROM读取与写入

芯片介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/132164189 接线 串口结果&#xff1a; 部分代码&#xff1a; #include "sys.h" #include "DS2431.h"unsigned char serialNb[8]; unsigned char write_data[128]; unsigned cha…

服务器安装JDK

三种方法 方法一&#xff1a; 方法二&#xff1a; 首先登录到Oracle官网下载JDK JDK上传到服务器中&#xff0c;记住文件上传的位置是在哪里&#xff08;我放的位置在/www/java&#xff09;&#xff0c;然后看下面指示进行安装 方法三&#xff1a; 首先登录到Oracle官网下载…

线性回归学习总结

一 、引文 1 回归分析 回归是统计学上用来分析数据的方法&#xff0c;以了解两个或多个变量之前的关系。通常是建立被解释变量Y和解释变量X之间关系的模型。回归分析的最早形式是最小二乘法。 勒让德和高斯都将该方法应用于从天文观测中确定关于太阳的物体的轨道&#xff08;…

SpringBoot复习:(34)@EnableWebMvc注解为什么让@WebMvcAutoconfiguration失效?

它导入了DelegatingWebMvcConfiguration 它会把容器中的类型为WebMvcConfigurer的bean注入到类型为WebMvcConfigurerComposite的成员变量configurers中。 可以看到它继承了WebMvcConfigurerSupport类 而WebMvcConfigureAutoConfiguration类定义如下 可以看到一个Conditional…

LeetCode98. 验证二叉搜索树

98. 验证二叉搜索树 文章目录 [98. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/)一、题目二、题解方法一&#xff1a;区间划分递归方法二&#xff1a;中序遍历递归迭代 一、题目 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有…

冒泡排序(超详细!)(C语言)

大家好&#xff01;欢迎来到Mr.kanglong的CSDN博文&#xff0c;今天来讨论一下冒泡排序&#xff0c;在百度百科中&#xff0c;关于为什么叫冒泡排序是这样解释的&#xff1a;因为越小的元素会经由交换慢慢“浮”到数列的顶端&#xff08;升序或降序排列&#xff09;&#xff0c…

移动云操作系统改造技术实践分享,跨操作系统云主机迁移优化(一)

近年来&#xff0c;Linux 操作系统在技术、社区和商业化方案均取得了快速发展&#xff0c;移动云先后发布了新一代天元操作系统和易行迁移工具&#xff0c;保障了移动云全场景业务高效迁移。在移动云 CentOS 迁移实践过程中&#xff0c;跨操作系统虚机迁移是改造中的一个重要环…

IP 协议的相关特性和数据链路层相关知识总结

目录 IP 协议的相关特性 一、IP协议的特性 二、 IP协议数据报格式 三、 IP协议的主要功能 1. 地址管理 动态分配 IP地址 NAT机制 NAT背景下的通信 IPV6 2. 路由控制​​​​​​​ 3.IP报文的分片与重组 数据链路层相关知识 1、以太网协议&#xff08;Ethernet&#xff09; 2.M…

“掌握类与对象,点亮编程之路“(下)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:《C语言入门知识》&#x1f649; &#x1f649; 内容推荐:“掌握类与对象&#xff0c;点亮编程之路“(上)&#x1f649; &#x1f439;今日诗词:春风得意马蹄疾&#xff0c;一日看尽长安花&#x1f439; 目录 &…

【十】PageHelper 插件源码分析

PageHelper 插件源码分析 简介&#xff1a; 在开发中经常使用到pagehelper分页插件&#xff0c;一直也只是使用没有深入去分析&#xff0c;今天花时间来研究一下pagehelper的实现原理的&#xff0c;阅读优秀的开源项目总是能有很多收获。 一、源码的获取 我们在git仓库中搜索可…

AI语音助理来了,我们还需要手机吗?

你是如何召唤苹果手机的语音助手Siri的&#xff1f; 已经12岁高龄的Siri&#xff0c;它主要提供了三个类型的“辅助功能”。 1、调动声音、闹钟、备忘录等系统基础应用的控制能力。比如&#xff1a;Hi Siri,明早两点我有个2亿美金的合同要签&#xff0c;记得提醒我。 2、调用第…

AT89C51单片机实现单片机串口互动(中断方式,单片机--单片机,应答)

说一下功能&#xff1a;客户机发送0x01到服务机 2服务单片机应答0xf2到客户机 3客户机接收到0xf2,发送信息153432这6个数字到服务机 4client发送完信息后发送0xaa结束通信 5server接收到0xaa后回复0xaa结束通信&#xff0c;从此老死不相往来 看代码&#xff1a; //发送端…