LeetCode第 91 场双周赛题解

news2024/10/2 22:16:41

目录

  • 2465. 不同的平均值数目
  • 2466. 统计构造好字符串的方案数
  • 2467. 树上最大得分和路径
  • 2468. 根据限制分割消息

2465. 不同的平均值数目

在这里插入图片描述
模拟一下即可

class Solution {
public:
    int distinctAverages(vector<int>& nums) {
        set<double>st;
        sort(nums.begin(),nums.end());
        int l=0,r=nums.size()-1;
        while(l<r)
        {
            st.insert((nums[l]+nums[r])*1.0/2);
            l++,r--;
        }
        return st.size();
    }
};

2466. 统计构造好字符串的方案数

在这里插入图片描述
爬楼梯的变种题。
f[i]表示字符串长度为i的方案数

class Solution {
public:
    const int mod=1e9+7;
    int countGoodStrings(int low, int high, int zero, int one) {
        vector<int>f(high+10,0);
        f[0]=1;
        for(int i=1;i<=high;i++)
        {
            if(i-zero>=0)f[i]=(f[i]+f[i-zero])%mod;
            if(i-one>=0)f[i]=(f[i]+f[i-one])%mod;
        }
        int res=0;
        for(int i=low;i<=high;i++)res=(res+f[i])%mod;
        return res;
    }
};

2467. 树上最大得分和路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由题意可知,B只有一种路径,那么我们可以先记录这条路径,然后枚举A可以走的每一种路径,同时用hash存b对应的情况,模拟一下即可。
有一个小细节需要注意,如果用邻接表存双向边的树时,判断叶子结点不能用u==-1判断,记录一下每个节点的度,发现叶子节点的度为1。进而判断。

class Solution {
public:
    static const int N=1e5+10;
    int h[N],e[N<<1],ne[N<<1],idx;
    int outd[N];
    int w[N];
    vector<int>p;
    map<int,int>mp;
    int maxv=-1e5;
    int n;
    void add(int a,int b)
    {
        e[idx]=b,ne[idx]=h[a],h[a]=idx++;
    }
    void dfs(int u,int fa,vector<int>&v)
    {
        v.push_back(u);
        if(u==0)
        {
            p=v;
            return;
        }
        for(int i=h[u];~i;i=ne[i])
        {
            int j=e[i];
            if(j==fa)continue;
            dfs(j,u,v);
        }
        v.pop_back();
    }
    void dfs(int u,int fa,int sum,int cnt)
    {
        int t=0;
        if(cnt<p.size()&&u==p[cnt])t=w[u]/2;//同时
        else if(!mp[u]||cnt>=p.size())t=w[u];
        sum+=t;
        if(cnt<p.size())mp[p[cnt]]++; 
        if(outd[u]<2&&u)maxv=max(maxv,sum);
        for(int i=h[u];~i;i=ne[i])
        {
            int j=e[i];
            if(j==fa)continue;
            dfs(j,u,sum,cnt+1);
        }
        if(cnt<p.size())mp[p[cnt]]--;
        sum-=t;
    }
    int mostProfitablePath(vector<vector<int>>& edges, int bob, vector<int>& amount) {
        memset(h,-1,sizeof h);
        n=edges.size();
        for(int i=0;i<edges.size();i++)
        {
            int a=edges[i][0],b=edges[i][1];
            add(a,b),add(b,a);
            outd[a]++,outd[b]++;
        }
        for(int i=0;i<amount.size();i++)w[i]=amount[i];
        vector<int>v;
        dfs(bob,-1,v);
        for(auto x:p)cout<<x<<' ';
        dfs(0,-1,0,0);
        return maxv;
    }
};

2468. 根据限制分割消息

在这里插入图片描述
暴力模拟一下,也没有别的什么技巧。

class Solution {
public:
    vector<int>p;
    vector<string> splitMessage(string message, int limit) {
        if(limit<=5)return{};
        int n=message.size();
        p.resize(n+1);
        for(int i=1;i<10&&i<=n;i++)p[i]=p[i-1]+1;
        for(int i=10;i<100&&i<=n;i++)p[i]=p[i-1]+2;
        for(int i=100;i<1000&&i<=n;i++)p[i]=p[i-1]+3;
        for(int i=1000;i<10000&&i<=n;i++)p[i]=p[i-1]+4;
        vector<string>res;
        for(int i=1;i<=n;i++)//枚举段数
        {
            string s2=to_string(i);
            if(3+s2.size()*2>limit)break;
            int sz=message.size()+i*(3+s2.size())+p[i];
            if(limit*(i-1)<sz&&limit*i>=sz)
            {
                int scnt=limit-(3+s2.size());//a+message的长度
                for(int j=1,idx=0;j<=i;j++)
                {
                    string s1=to_string(j);
                    int t=scnt-s1.size();//message的长度
                    string s;
                    s=message.substr(idx,t)+'<'+s1+'/'+s2+'>';
                    res.push_back(s);
                    idx+=t;
                }
                break;
            }
        }
        return res;
    }
};

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

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

相关文章

Intellij各个功能小件的样子

文章目录资料ControlsButtonBuilt-in buttonSplit buttonCheckboxCombo boxDescription textDrop-down listGot It tooltipGroup headerInput fieldLinkNotificationsBallonBannerProgress indicatorsLoaderProgress barProgress textRadio buttonScrollbarSearch fieldTableTa…

CSAPP实验记录(2)--------- Bomb

实验简介 本实验需要拆除一个“二进制炸弹”&#xff0c;“二进制炸弹”是一个可执行目标程序。运行时&#xff0c;它会提示用户键入6个不同的字符串。如果其中任何一个错误&#xff0c;炸弹就会“爆炸”。必须通过逆向工程和汇编语言知识&#xff0c;推导出六个字符串分别是什…

Linux权限管理

修改权限-chmod 通过chmod指令&#xff0c;可以修改文件或者目录的权限 第一种方式 - 变更权限 u:所有者 g:所有组 o:其他人 a:所有人 chmod urwx,grx,ox 文件目录名 chmod ow …

条件随机场CRF(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 本文是作者学习CRF后的笔记。 最近更新时间&#xff1a;2022.11.15 最早更新时间&#xff1a;2022.11.15 条件随机场CRF是适宜于顺序预测任务的判别模型&#xff0c;可用于命名实体识别、词性标注等。 文章目录1. linear-chain CRF2. CRF目标…

使用TensorRT量化ResNet50网络(PTQ)

深度学习正在彻底改变行业提供产品和服务的方式。 这些服务包括用于计算机视觉的对象检测、分类和分割&#xff0c;以及用于基于语言的应用程序的文本提取、分类和摘要。 这些应用程序必须实时运行。 大多数模型都采用浮点 32 位算法进行训练&#xff0c;以利用更大的动态范…

python代码规范工具

文章目录一&#xff1a;Pycharm 创建文件自动头部二&#xff1a;代码门禁三 : 附录一&#xff1a;Pycharm 创建文件自动头部 Pycham —> Preferences —> 编辑器 —> 文件和代码模版 —> 文件 —> Python Script —> 填写头部 #!/usr/bin/env python # -*- c…

详解clickhouse分区目录的合并过程

数据存储底层分布 目录名类型说明202103_1_10_2目录分区目录一个或多个&#xff0c;由于分区LSM生成的detached目录通过DETACH语句卸载后的表分区存放位置format_version.txt文本文件纯文本&#xff0c;记录存储的格式 columns.txt&#xff1a;该文件是一个文本文件&#xff0c…

vue 生成二维码的两种方式

方式一&#xff1a;qrcode&#xff08;无 icon 图标&#xff09; npm i qrcodejs2 --save 完整代码 <template><div class"flex-box"><div>qrcode&#xff08;无 icon 图标&#xff09;</div><div class"qr-code" ref"…

【面试题】BFC的理解

1. BFC Block format context(BFC)&#xff0c;块级格式上下文。BFC是一个独立的布局环境&#xff0c;BFC内部的元素的渲染不会影响到边界以外的元素。 2. BFC的布局规则 BFC内部的块会在垂直方向上一个接一个的放置&#xff1b;垂直方向上的距离由margin决定&#xff0c;在…

vision transformer 剪枝论文汇总

Vision Transformer Pruning 这篇论文的核心思想很简单&#xff0c;就是剪维度&#xff0c;也就是说剪的是这个d。 具体方法就是通过一个gate&#xff0c;如图中的dimension pruning&#xff0c;输出0或者1&#xff0c;来判断不同维度的重要性&#xff0c;但是由于0和1&#xf…

最新CleanMyMac X4.12.1中文版Mac系统优化清理工具

CleanMyMac X v4.12.1是COCO玛奇朵搜集到的一款mac电脑系统清理工具&#xff0c;删除系统缓存文件 , 多余的应用程序语言包 , PowerPc软件运行库等。 CleanMyMac是一个强大的应用程序&#xff0c;清洁&#xff0c;优化和保护您的Mac多年的使用。运行即时系统清理&#xff0c;卸…

html+css实现容器显示两行文本超出部分以省略号显示

Bootstrap 给予响应式、移动设备优先的流式栅格系统提供了十分丰富的样式类&#xff0c;基于这些了可以做出很多好看的效果&#xff0c;虽让提供了常用基本样式类&#xff0c;但有一些比较特殊的需求 比如bootstrap 提供了 text-truncate 样式类&#xff0c;使用这个类可以轻松…

只开源36小时!GitHub标星139K从Java开发到软件架构师进阶笔记

什么是架构? 关于架构&#xff0c;我以前一直以为&#xff0c;只有真正从0到1&#xff0c;经历各种技术选型后搭建出来的一个系统框架&#xff0c;才算是真正的架构。 在程序员的现实世界里&#xff0c;不想当架构师的程序员不是个好程序员&#xff0c;即使你未曾主动想去当…

Mac M1 安装 brew

安装顺序&#xff1a; 1. 安装 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 执行完后&#xff0c;发现brew &#xff0c;还是命令找不到。 2. 还要配置&#xff1a; 复制该内容到 vim ~/.zprofile&#x…

ElasticSearch——手写一个ElasticSearch分词器(附源码)

1. 分词器插件 ElasticSearch提供了对文本内容进行分词的插件系统&#xff0c;对于不同的语言的文字分词器&#xff0c;规则一般是不一样的&#xff0c;而ElasticSearch提供的插件机制可以很好的集成各语种的分词器。 Elasticsearch 本身并不支持中文分词&#xff0c;但好在它…

Python——BeautifulSoup库

下面例题基于同一个网页讲解&#xff0c;进入网页后右键查看页面源代码对应着看 文章目录前言一、BeautifulSoup库简介什么是BeautifulSoup库&#xff1f;BeautifulSoup库解析器网页爬虫解析网页的基本方法二、BeautifulSoup库的安装安装测试三、BeautifulSoup库的基本元素获取…

APS排产在线材线束行业的应用

经过数年的发展&#xff0c;我国线束行业从无到有、从小到大&#xff0c;已经具备了一定的规模&#xff0c;其生产的线束产品能够满足市场上绝大多数的需求。世界上&#xff0c;任何事物的发展都不可能一帆风顺&#xff0c;总是在矛盾中纠正自身不足&#xff0c;从而不断前进。…

关于CUDA+Torch+TorchVision+Python环境配置问题

背景知识 1、GPU的并行计算能力&#xff0c;在过去几年里恰当地满足了深度学习的需求。在训练强化学习模型时&#xff0c;为了提供更好地算力和训练时间&#xff0c;因此需要使用GPU。 2、CUDA&#xff1a;是Nvidia推出的只能用于自家GPU的并行计算框架。只有安装这个框架才能…

机器学习笔记之条件随机场(五)条件随机场需要解决的任务介绍

机器学习笔记之条件随机场——条件随机场需要解决的任务介绍引言回顾&#xff1a;条件随机场条件随机场要解决的任务引言 上一节介绍了条件随机场的建模对象——条件概率P(I∣O)\mathcal P(\mathcal I \mid \mathcal O)P(I∣O)参数形式和向量形式的表示。本节将针对条件随机场…

java多线程基础技术

1.1 进程与多线程 1、进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至 CPU&#xff0c;数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的 当一个程…