【力扣周赛#324】6266. 使用质因数之和替换后可以取到的最小值+6267. 添加边使所有节点度数都为偶数+6268. 查询树中环的长度

news2024/11/13 20:45:48

目录

6265. 统计相似字符串对的数目 - ac

6266. 使用质因数之和替换后可以取到的最小值 

分解质因数

1、tle代码

2、优化ac代码

6267. 添加边使所有节点度数都为偶数 - 建图+分类讨论

关于建图 

6268. 查询树中环的长度 - LCA最近公共祖先


6265. 统计相似字符串对的数目 - ac

class Solution {
public:
    int similarPairs(vector<string>& words) {
        int res=0;
        
        for(int i=0;i<words.size()-1;i++)
        {
            set<char>s1;
            
            for(int j=0;j<words[i].size();j++) s1.insert(words[i][j]);
            for(int j=i+1;j<words.size();j++) 
            {
                set<char>s2;
                for(int k=0;k<words[j].size();k++) s2.insert(words[j][k]);
                if(s1==s2) res++;
            }
        }
        return res;
    }
};

6266. 使用质因数之和替换后可以取到的最小值 

分解质因数

for(int i=2;i<=x/i;i++)
    if(x%i==0) //i一定是质数
    {
        int cnt=0;
        while(x%i==0) x/=i,cnt++;
        cout<<i<<' '<<cnt<<endl; //输出质因数 次方数
    }
if(x>1) cout<<x<<' '<<1<<endl;

1、tle代码

思路大体是对的 但是搞错了题目一个点 

当某数的质因数为1 和本身时  质因数之和=本身

我当时想成 质因数之和=1+本身了 1不是质数!!!

class Solution {
public:
    bool isprime(int x)
    {
        if(x<2) return false;
        for(int i=2;i<=x/i;i++)
            if(x%i==0) return false;
        return true;
    } 
    
    int smallestValue(int n) 
    {
        int minx=0x3f3f3f3f;
        int sum=n;
        if(isprime(n)) return n;
        
        while(true)
        {
            n=sum;
            if(isprime(n)) break;
            sum=0;
            for(int i=2;i<=n/i;i++)
            {
                int cnt=0;
                if(n%i==0)
                {
                    while(n%i==0) n/=i,cnt++;
                }
                while(cnt--) sum+=i;
            }
            if(n>1) sum+=n;
            minx=min(minx,sum);
        }
        
        return minx;
    }
};

2、优化ac代码

class Solution {
public:
    int yin(int n)
    {
        int sum=0;
        for(int i=2;i<=n/i;i++)
            if(n%i==0)
            {
                while(n%i==0) n/=i,sum+=i;
            }
        if(n>1) sum+=n;
        return sum;
    }
    
    int smallestValue(int n) 
    {
        int cnt=0;
        while(true)
        {
            int x=yin(n);
            if(x==n) break;
            n=x;
        }
        return cnt;
    }
};
class Solution {
public:
    int smallestValue(int n) 
    {
        int t;
        while(true)
        {
            t=n;
            int num=0;
            for(int i=2;i<=n/i;i++)
            {
                if(n%i==0)
                {
                    while(n%i==0) n/=i,num+=i;
                }
            }
            if(n>1) num+=n;
            if(t==num) break;
            n=num;
        }
        return t;
    }
};

 

6267. 添加边使所有节点度数都为偶数 - 建图+分类讨论

6267. 添加边使所有节点度数都为偶数

思路:

  • 先统计奇度数点 存序号
  • 分类讨论可能满足条件的情况
  • 如果奇度数点==0 则不用连直接return true
  • 如果奇度数点==2

        如果两点间没有连线 则只要连接这两个点就true

        如果两点间有连线 则找出一个除a b点外的点c 如果该点和a b都没有连线 则两条边可以c-a 和c-b 也true

  • 如果奇度数点==4 如果两两可以相连则true(满足任意一种两两相连情况)
  • 除以上情况外都为false

关于建图 

  • 本题用map存图   map<PII,int> e
  • e[{a,b}]=e[{b,a}]=1 无向图 a b点间有连线
  • 判断a b点间是否相连   e.count({a,b})
class Solution {
public:
    static const int N=1e5+10;
    bool isPossible(int n, vector<vector<int>>& edges) {
        int d[N]={0};
        map<pair<int,int>,int> e;
        for(vector<int>& x:edges)
        {
            int a=x[0],b=x[1];
            d[a]++,d[b]++;
            e[{a,b}]=e[{b,a}]=1;
        }
        vector<int> v;
        for(int i=1;i<=n;i++) if(d[i]%2) v.push_back(i);

        if(v.size()==0) return true;
        else if(v.size()==2)
        {
            int a=v[0],b=v[1];
            if(!e.count({a,b})) return true; //如果a b两点间不存在连线 则将两点相连即可

            //否则找一个偶度数节点分别连接a和b 这样偶度数+2还是偶数 两个奇度数点+1也是偶数
            for(int i=1;i<=n;i++) 
                if(i!=a&&i!=b&&!e.count({i,a})&&!e.count({i,b})) return true;
        }
        else if(v.size()==4)
        {
            int a=v[0],b=v[1],c=v[2],d=v[3];
            //如果四个点能两两相连 满足任意一种情况即可 否则false
            if(!e.count({a,b})&&!e.count({c,d})) return true;
            if(!e.count({a,c})&&!e.count({b,d})) return true;
            if(!e.count({a,d})&&!e.count({b,c})) return true;  
        }
        return false;
    }
};

 

6268. 查询树中环的长度 - LCA最近公共祖先

6268. 查询树中环的长度

对于两个点 a 和 b,每次把深度更深的点往父节点移一步,直到它们走到同一个点,即可求ab两点到LCA距离之和

环长度 = ab两点到LCA距离之和+1

思路:

  • 因为是完全二叉树 所以深度和节点序号很规律 某节点序号/2就是父节点
  • 环可以看成是从 a 出发往上走,在某个位置「拐弯」,往下走到 b。

    这个拐弯的地方就是 a 和 b 的最近公共祖先LCA

  • 第一个图 5和3相连 则它们的LCA是1  环长度=5到1距离+3到1距离+1

 

  • 如何找LCA?

    不断循环,每次循环比较 a 和 b 的大小:

    如果 a>b,则 a 的深度大于等于 b 的深度,那么把 a 移动到其父节点,即 a=a/2;
    如果 a<b,则 a 的深度小于等于 b 的深度,那么把 b 移动到其父节点,即 b=b/2;
    如果 a=b,则找到了LCA,退出循环。

class Solution {
public:
    vector<int> cycleLengthQueries(int n, vector<vector<int>>& q) {
        vector<int> ans;
        for(int i=0;i<q.size();i++)
        {
            int res=1;
            int a=q[i][0],b=q[i][1];
            while(a!=b)
            {
                a>b? a/=2:b/=2;
                res++;
            }
            ans.push_back(res);
        }
        return ans;
    }
};

 

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

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

相关文章

[附源码]Nodejs计算机毕业设计基于微信平台的车险投保系统设计与实现Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Vue实现后台管理系统

目录 前言 登录页面 后台界面 前言 今天用Vue实现一个简易的后台&#xff0c;不借助接口和后端代码&#xff0c;仅通过前端实现&#xff0c;本案例涉及Vue路由相关知识&#xff0c;不熟悉Vue路由可以先看一下右边的文章再接着看下面的项目案例&#xff1a;Vue路由 这篇文章详…

[CISCN2019 华北赛区 Day1 Web2]

目录 前言 涉及考点 部分记录 前言 第一次看到这题时没有思路&#xff0c;通过搜索相关WP并简单了解考点所涉及的知识后&#xff0c;通过解题来扩展自己的知识面 涉及考点 python爬虫&#xff0c;支付逻辑漏洞&#xff0c;cookie篡改&#xff0c;重放攻击&#xff0c;JWT…

C++11后的STL算法

文章目录一、函数对象二、预定义的函数对象三、算法函数1.自己实现foreach算法2.自己实现的findif算法3.自己实现bsort算法一、函数对象 STL提供了很多处理容器的函数模板&#xff0c;它们的设计是相同的&#xff0c;有以下特点&#xff1a; 1&#xff09;用迭代器表示需要处理…

数据结构---用栈实现队列

用栈实现队列模拟入队模拟出队JAVA实现总结用栈来模拟一个队列&#xff0c;要求实现队列的两个基本操作&#xff1a;入队、出队。栈是先入后出&#xff0c;队列是先入先出 用两个栈来实现一个队列功能 让其中一个栈作为队列的入口&#xff0c;负责插入新元素&#xff1b;另一个…

ARM9和STM32什么关系?

已剪辑自: https://mp.weixin.qq.com/s/QHARY-D2SwFoQbFsJoCNlg 有小伙伴问&#xff1a;ARM9和STM32什么关系&#xff1f;如果时间倒退10年&#xff0c;ARM9、 s3c2410还算是比较流行的年代&#xff0c;但STM32这类“新时代”的ARM处理器也问世了。 ARM9是早期的ARM处理器&…

Java+MySQL基于ssm的打车管理系统的设计与实现

随着时代的发展,交通也变的越来越便利,但是很多时候人们出行的时候因为各种原因还是会进行打车,因为一些地区比较偏远或者处于特殊的时间段而用户又急需用车等情况导致没办法及时的打到车,这种情况下就急需一套基于互联网的打车系统出现了。 本打车管理系统采用JAVA语言来进行开…

Vivado2019+Modelsim仿真环境搭建

目录 一、安装准备 二、安装与配置 2.1 Vivado安装 2.2 modelsim安装 2.3 Vivado设置modelsim仿真环境 1&#xff09;仿真库生成设置 2&#xff09;modelsim添加仿真库&#xff08;逐个添加&#xff09; 3&#xff09;modelsim添加仿真库&#xff08;批量添加&#xff…

Spring 中 @Value 注解使用和源码分析

1、Value 注解使用 先配置本地 application.properties 如下&#xff1a; apple.nameabc代码如下&#xff1a; PropertySource("application.properties") public class Apple {Value("${apple.name}")public String name; }ComponentScan public class …

非零基础自学Golang 第9章 结构体 9.7 匿名结构体 9.8 小结 9.9 知识拓展

非零基础自学Golang 文章目录非零基础自学Golang第9章 结构体9.7 匿名结构体9.7.1 匿名结构体定义与初始化9.7.2 匿名结构体的应用9.8 小结9.9 知识拓展9.9.1 使用结构体解析XML文件第9章 结构体 9.7 匿名结构体 9.7.1 匿名结构体定义与初始化 匿名结构体&#xff0c;顾名思…

blender源代码编译运行

其实在blender官网上已经给出了编译步骤https://wiki.blender.org/wiki/Building_Blender/Windows&#xff0c;由于在源码编译的过程中还遇到了很多问题&#xff0c;特此记录一下。 文章目录前提准备代码下载1. blender源码下载2. lib下载编译前提准备 Visual Studio2019或者2…

Innodb存储引擎-执行流程分析和二阶段提交分析

文章目录执行流程分析基本流程WAL(Write-Ahead Log)write和fsync区别innodb_flush_logs_at_trx_commit & sync_binlog二阶段提交执行流程分析 基本流程 &#xff08;1&#xff09;连接,分析,优化,执行 客户端与MySQL Server建立连接&#xff0c;发送语句给MySQL Server&a…

2022.12.18 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.RNNConventional Recurrent Neural Networks5.Deep Recurrent Neural Networks5.1 Deep Transition RNN5.2 Deep Output5.3 Stacked RNN6.实验6.1 训练6.2 结果与分析7.讨论深度学习GRU公式推导1.GRU前向传播2.GRU反向传播GRU代码实现…

关于数学中“函数(function)”的含义

目录 1. 问题 2. “function”是如何翻译成“函数”的&#xff1f; 3. “function”是谁引入数学中的&#xff0c;其意义何在&#xff1f; 3.1 “function”的词源 3.2 “function”引入数学中 3.3 “function”的含义 4. 常见的函数(Common Functions) 4.1 线性函数(L…

word页码如何设置为章节加页码,例如第一章第一页1-1、第二章章第一页2-1

由于用到word页码分章节页码的形式&#xff0c;从网上查了一下&#xff0c;质量真的很差&#xff0c;没有一篇文章讲清楚的&#xff0c;有的所答非所问&#xff0c;一怒之下&#xff0c;利用几个小时的时间解决问题并写下这篇文章&#xff0c;以供大家学习参考&#xff01;&…

【JSP】

文章目录简介Scriptlet脚本小程序JSP的指令标签include静态包含include动态包含不传参传参JSP的四大域对象四种属性范围验证属性范围的特点EL表达式操作字符串操作集合emptyJSTL条件动作标签if标签choose、when 和 otherwise 标签迭代标签foreach格式化动作标签formatNumber标签…

NProgress 进度条的使用方法

安装NProgress 进度条 npm install nprogress --save-dev 在vue项目中mian.js中或router.js或axios.js&#xff1a; import NProgress from nprogress import nprogress/nprogress.css 使用NProgress进度条 NProgress.start(); &#xff1a;进度条开始&#xff1b; NProgr…

GCD和LCM

目录 一 整除 定义 性质 二 GCD 1&#xff09;定义 2&#xff09;性质 3&#xff09;GCD编程 ①暴力法 ②欧几里得算法 ③更相减损术 ④Stein算法 三 LCM ①暴力法 ②最大公约数法 四 裴蜀定理 例题&#xff1a;裴蜀定理 一 整除 定义 a 能整除b,记为 a|b。其…

你还会想起这道题吗

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 原神是由米哈游自主研发的一款全新开放世界冒险游戏。游戏发生在一个被称作「提瓦特」的幻想世界&#xff0c;在这里&#xff0c;被神选中的人将被授予「神之眼」&#xff0c;导引元…

m基于神经网络的气候预测matlab仿真,气候数据采用的BoM气候数据,神经网络为matlab编程实现不使用工具箱函数

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 人工神经网络&#xff08;Artificial Neural Networks&#xff0c;简写为ANNs&#xff09;也简称为神经网络&#xff08;NNs&#xff09;或称作连接模型&#xff08;Connection Model&#xff09…