力扣周赛 -- 370周赛

news2024/11/26 12:40:01

先更新前两道题目,下午更新后两道

两道模板题(拓扑排序)

拓扑排序

拓扑排序(Topological Sorting):一种对有向无环图(DAG)的所有顶点进行线性排序的方法,使得图中任意一点 $u$ 和 $v$,如果存在有向边 $<u, v>$,则 $u$ 必须在 $v$ 之前出现。对有向图进行拓扑排序产生的线性序列称为满足拓扑次序的序列,简称拓扑排序。

拓扑排序解决的主要问题?

拓扑排序可以用来解决一些依赖关系的问题,比如项目的执行顺序,课程的选修顺序等。

 

 刚开始我的思路是,先想的是并查集,但是看了第二题(提示有向无环图)就先想拓扑排序了,第一道题的代码复制一下到第二题基本就可以解决第二道题

 差分约束应该也是可以实现的

 但是我这里采用更为简单的做法,拓扑排序

 拓扑排序可以解决一系列具有依赖关系的问题,例如家谱树,课程表等等问题

 前三题为板子题

class Solution {
public:
    int din[310];
    int dou[310];
    int h[11010],ne[11010],e[11010],idx;
    queue<int> q;
    int sort_d[110];
    int sid = 0;
    void top_sort(int n)
    {
        for(int i = 0;i < n;i++)
        {
            if(!din[i]) q.push(i);
        }
        
        while(!q.empty())
        {
           auto t = q.front();
           q.pop();
           sort_d[sid++] = t;
           for(int i = h[t];i != -1;i = ne[i])
           {
               int b = e[i];//i是对应点的虚拟编号(相当于索引),正式编号是e[i]
               din[b]--;
               if(!din[b])
               {
                   q.push(b);
               }
           }
        }
    }
    void add(int a,int b)
    {
        e[idx] = b,ne[idx] = h[a],h[a] = idx++;
    }
    int findChampion(vector<vector<int>>& grid) 
    {
        int n = grid.size();
        
        memset(h,-1,sizeof(h));
        memset(sort_d,-1,sizeof(sort_d));
        for(int i = 0;i < n;i++)
        {
            for(int j = 0;j < n;j++)
            {
                if(i != j)
                {
                   int a_team = i;
                   int b_team = j;
                   if(grid[i][j])
                   {
                     //a队强
                     din[b_team]++;
                     dou[a_team]++;
                     add(a_team,b_team);
                   }
                   else
                   {
                      //b队强
                     din[a_team]++;
                     dou[b_team]++;
                     add(b_team,a_team);
                   }
                }
            }
        }
        
        top_sort(n);
        if(sort_d[0] == -1) return -1;
        return sort_d[0];
    }
};

 第二题也是板子题,跟第一题没什么区别,复制第一题的代码改一下就行了

class Solution {
public:
    int din[310];
    int dou[310];
    int h[111010],ne[111010],e[111010],idx;
    queue<int> q;
    int sort_d[110];
    int sid = 0;
    bool flag = false;
    void top_sort(int n)
    {
        for(int i = 0;i < n;i++)
        {
            if(!din[i]) q.push(i);
        }
        if(q.size() > 1)
        {
            flag = true;
            return ;
        }
        while(!q.empty())
        {
           auto t = q.front();
           q.pop();
           sort_d[sid++] = t;
           for(int i = h[t];i != -1;i = ne[i])
           {
               int b = e[i];//i是对应点的虚拟编号(相当于索引),正式编号是e[i]
               din[b]--;
               if(!din[b])
               {
                   q.push(b);
               }
           }
        }
    }
    void add(int a,int b)
    {
        e[idx] = b,ne[idx] = h[a],h[a] = idx++;
    }
    int findChampion(int n,vector<vector<int>>& edge) 
    {
        
        memset(h,-1,sizeof(h));
        memset(sort_d,-1,sizeof(sort_d));
        int size_edge = edge.size();
        for(int i = 0;i < edge.size();i++)
        {
            int a = edge[i][0];
            int b = edge[i][1];
            //a队强
            add(a,b);
            din[b]++;
            dou[a]++;
        }
        top_sort(n);
        

        if(flag) return -1;
        return sort_d[0];
    }
};

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

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

相关文章

【LeetCode】每日一题 2023_11_5 重复的DNA序列

文章目录 刷题前唠嗑重复的DNA序列题目描述代码和解题思路偷看大佬题解结语 刷题前唠嗑 LeetCode? 启动&#xff01;&#xff01;&#xff01; 重复的DNA序列 题目链接&#xff1a;187. 重复的DNA序列 题目描述 代码和解题思路 func findRepeatedDnaSequences(s string) …

fastapi-Headers和Cookies

在FastAPI中&#xff0c;Headers是一个特殊的类型&#xff0c;用于处理HTTP请求头&#xff08;Headers&#xff09;。Headers允许你接收、访问和修改HTTP请求中的头部信息。 使用Headers&#xff0c;你可以在FastAPI的路由视图中将请求头作为参数接收&#xff0c;并对它们进行…

linux基本用法

文章目录 前言一、开关机操作1.1 开机登陆1.2 关机1.3 系统目录结构 二、常用的基本命令(重点)2.1 相对路径与绝对路径2.2 处理目录的常用命令2.2.1 ls2.2.2 cd 切换目录2.2.3 pwd ( 显示目前所在的目录 )2.2.4 mkdir &#xff08;创建新目录&#xff09;2.2.5 rmdir ( 删除空的…

【Vue.js】Vue3全局配置Axios并解决跨域请求问题

系列文章目录 文章目录 系列文章目录背景一、部署Axios1. npm 安装 axios2. 创建 request.js&#xff0c;创建axios实例3. 在main.js中全局注册axios4. 在页面中使用axios 二、后端解决跨域请求问题方法一 解决单Contoller跨域访问方法二 全局解决跨域问题 背景 对于前后端分离…

回溯算法--4后问题

1.问题描述 四皇后问题&#xff1a;在4 4 的方格棋盘上放置4个皇后&#xff0c;使得没有两个皇后在同一行、同一列、也不在同一条45度的斜线上。问有多少种可能的布局&#xff1f; 解是4维向量 比如上面这个解<2,4,1,3> 分别表示圆圈的第2列、第4列等 还可以得到另一解…

LeetCode题:83删除排序链表中的重复元素 141环形链表

83删除排序链表中的重复元素 题目内容 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入&#xf…

下载安装PyCharm的步骤

1、首先进入Pycharm官网&#xff0c;并进行下载&#xff0c;日常使用社区版也是OK的 官网&#xff1a;https://www.jetbrains.com/pycharm/download/?sectionwindows 2、可以自定义路径进行安装&#xff0c;注意路径要全英哈 3、大家可以根据自己的需要来进行勾选 4、安装完成…

【漏洞复现】Webmin 远程命令执行(CVE-2019-15107)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞验证 1.5、深度利用1、反弹Shell 1.6、修复建议1.7、参考链接 说明内容漏洞编号CVE-2019-15107漏洞…

蒙哥马利算法模乘(四)

一 蒙哥马利算法模乘介绍 蒙哥马利模乘算法主要为了进行大数运算a*b mod n,在介绍蒙哥马利模乘之前,先让我们来了解蒙哥马利约减。 1.1 蒙哥马利约减 a mod n 如果a是一个2048位的整数,n是一个1024位的整数,如果直接采用相除的方式,不论在空间还是时间上都会产生非常大…

【漏洞复现】Django_debug page_XSS漏洞(CVE-2017-12794)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞分析3、漏洞验证 说明内容漏洞编号CVE-2017-12794漏洞名称Django_debug page_XSS漏洞漏洞评级影响范…

北京联通iptv组播配置

多年前折腾过iptv&#xff0c;近期搬家换了个大电视&#xff0c;打算把iptv配置好了&#xff0c;尽管不怎么看&#xff0c;但聊胜于无。 其实很简单&#xff0c;用到了一些工具&#xff0c;记录如下 1. openwrt配置 因为有软路由&#xff0c;所以就借助openwrt了&#xff0c;一…

2023年03月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 十进制数111转换成二进制数是&#xff1f;&#xff08; &#xff09; A: 111 B: 1111011 C: 101111 D: 1101111 答案…

往事匆匆,值得怀念

不知不觉已经一年了 时间过得好快&#xff0c;各位赶路人&#xff0c;愿大家前程似锦&#xff0c;家庭美满。

智能·开源·安全|.NET Conf China 2023

点击蓝字 关注我们 大会介绍 .NET Conf China 2023是面向开发人员的社区峰会&#xff0c;延续 .NET Conf 2023的活动&#xff0c;庆祝 .NET 8的发布和回顾过去一年来 .NET 在中国的发展成果&#xff0c;它是由中国各地区的技术社区共同发起举办、知名企业和开源组织联合协办&am…

shiro 框架使用学习

简介 Shiro安全框架是Apache提供的一个强大灵活的安全框架Shiro安全框架提供了认证、授权、企业会话管理、加密、缓存管理相关的功能&#xff0c;使用Shiro可以非常方便的完成项目的权限管理模块开发 Shiro的整体架构 1、Subject ​ Subject即主体&#xff08;可以把当前用户…

0X02

web9 阐释一波密码&#xff0c;依然没有什么 发现&#xff0c;要不扫一下&#xff0c;或者看一看可不可以去爆破密码 就先扫了看看&#xff0c;发现robots.txt 访问看看,出现不允许被访问的目录 还是继续尝试访问看看 就可以下载源码&#xff0c;看看源码 <?php $fl…

Nacos-2.2.2源码修改集成高斯数据库GaussDB,postresql

一 &#xff0c;下载代码 Release 2.2.2 (Apr 11, 2023) alibaba/nacos GitHub 二&#xff0c; 执行打包 mvn -Prelease-nacos -Dmaven.test.skiptrue -Drat.skiptrue clean install -U 或 mvn -Prelease-nacos ‘-Dmaven.test.skiptrue’ ‘-Drat.skiptrue’ clean instal…

强化学习的动态规划三

一、策略的改进 假设新的贪婪策略π0与旧的策略π效果相当&#xff0c;但并不优于π。由此得出vπvπ0&#xff0c;且根据之前的推导可以得出&#xff1a;对于所有的s∈S 这与贝尔曼最优方程相同&#xff0c;因此&#xff0c;vπ0是v∗&#xff0c;π和π0是最佳策略。因此&…

笔记本360wifi,wifi共享大师掉线,

笔记本上搭建的wifi热点&#xff0c;例如360wifi、wifi共享大师等&#xff0c;手机连接wifi后总是隔一段时间掉线。原因:网卡驱动和无线驱动有问题&#xff0c;需要更新或换成稳定的网卡驱动和无线驱动。 解决方案: ① 安装驱动精灵: ②点击驱动管理 ③ ④ ⑤进行阻止windo…

AI:60-基于深度学习的瓜果蔬菜分类识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…