热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

暑假算法训练营报名

本文主要分享【暑假算法训练营报名】,技术文章【暑假算法7.25,Day24】为【小十一吖】投稿,如果你遇到算法相关问题,本文相关知识或能到你。暑假算法训练营报名暑假算法7.25,Day24图论

本文主要分享【暑假算法训练营报名】,技术文章【暑假算法7.25,Day24】为【小十一吖】投稿,如果你遇到算法相关问题,本文相关知识或能到你。

暑假算法训练营报名

暑假算法7.25,Day24

图论,背模板代码。。

第一题

网络延迟时间

class Solution {
   
    int N=105;
    int[][] g=new int [N][N];
    int[] dist=new int[N];
    boolean[] st=new boolean[N];
    public int networkDelayTime(int[][] times, int n, int k) {
   
        for(int i=0;i<=n;i++){
   
            Arrays.fill(g[i],0x3f3f3f3f);
        }
        for(int[] nums:times){
   
            int a=nums[0];
            int b=nums[1];
            int c=nums[2];
            g[a][b]=c;
        }
        return dijkstra(n,k);
    }
    int dijkstra(int n,int k){
   
        Arrays.fill(dist,0x3f3f3f3f);
        dist[k]=0;
        for(int i=0;i<n;i++){
   
            int t=-1;
            for(int j=1;j<=n;j++){
   
                if(!st[j]&&(t==-1||dist[j]<dist[t])){
   
                    t=j;
                }
            }
            st[t]=true;
            for(int j=1;j<=n;j++){
   
                dist[j]=Math.min(dist[j],dist[t]+g[t][j]);
            }
        }
        int res=0;
        for(int j=1;j<=n;j++){
   
            if(dist[j]==0x3f3f3f3f){
   
                return -1;
            }
            res=Math.max(res,dist[j]);
        }
        return res;
    }
}

请添加图片描述

第二题

K站中转内最便宜的航班

class Solution {
   
    //有边数限制使用贝尔曼夫算法
    int N=100;
    int M=5010;
    List<Node> list=new ArrayList<>();
    int[] dist=new int[N];
    int[] backup=new int[N];
    int n,m,k,src,dst;
    public int findCheapestPrice(int n, int[][] flights, int src, int dst, int k) {
   
        this.n=n;
        this.m=flights.length;
        //k次中转是k条边
        this.k=k+1;
        this.src=src;
        this.dst=dst;
        for(int[] s:flights){
   
            int a=s[0];
            int b=s[1];
            int w=s[2];
            list.add(new Node(a,b,w));
        }
        int t=bellman_ford();
        return t;
    }
    int bellman_ford(){
   
        Arrays.fill(dist,0x3f3f3f3f);
        dist[src]=0;
        for(int i=0;i<k;++i){
   
            backup=Arrays.copyOfRange(dist,0,N);
            for(int j=0;j<m;++j){
   
                int a=list.get(j).a;
                int b=list.get(j).b;
                int w=list.get(j).w;
                dist[b]=Math.min(dist[b],backup[a]+w);
            }
        }
        if(dist[dst]>0x3f3f3f3f/2) return -1;
        else return dist[dst];
    }
}
class Node{
   
    int a,b,w;
    public Node(int a, int b, int w) {
   
            this.a = a;
            this.b = b;
            this.w = w;
    }
}

请添加图片描述

第三题

到达角落需要移除的障碍物的最小数目

struct node{
   
    int x,y;
    int d;
    bool operator<(const node&a)const{
   
        return d>a.d;
    }
};
class Solution {
   
public:
    int minimumObstacles(vector<vector<int>>& grid) {
   
        int m = grid.size(), n = grid[0].size();
        vector<vector<int>> dirs{
   {
   -1, 0}, {
   0, 1}, {
   1, 0}, {
   0, -1}};
        vector<vector<int>> visited(m, vector<int>(n, 0));
        vector<vector<int>> dis(m, vector<int>(n, INT_MAX));
        visited[0][0] = 0;
        dis[0][0]=0;
        priority_queue<node> q;
        q.push((node){
   0, 0, 0});
        while (!q.empty()) {
   
            auto t = q.top(); q.pop();
            if(!visited[t.x][t.y]) {
   
                visited[t.x][t.y]=1;
                for (auto dir : dirs) {
   
                    int x = t.x + dir[0], y = t.y + dir[1];
                    if (x < 0 || x >= m || y < 0 || y >= n) continue;
                    if(dis[x][y]>dis[t.x][t.y]+grid[x][y]){
   
                        dis[x][y]=dis[t.x][t.y]+grid[x][y];
                        q.push((node){
   x,y,dis[x][y]});
                    }
                }
            }
        }
        return dis[m-1][n-1];
    }
};

请添加图片描述

本文《暑假算法7.25,Day24》版权归小十一吖所有,引用暑假算法7.25,Day24需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • Java编程实现邻接矩阵表示稠密图的方法及实现类介绍
    本文介绍了Java编程如何实现邻接矩阵表示稠密图的方法,通过一个名为AMWGraph.java的类来构造邻接矩阵表示的图,并提供了插入结点、插入边、获取邻接结点等功能。通过使用二维数组来表示结点之间的关系,并通过元素的值来表示权值的大小,实现了稠密图的表示和操作。对于对稠密图的表示和操作感兴趣的读者可以参考本文。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
author-avatar
手机用户2602897795
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有