L2-043 龙龙送外卖

这篇具有很好参考价值的文章主要介绍了L2-043 龙龙送外卖。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Powered by:NEFU AB-IN

Link

L2-043 龙龙送外卖

  • 题意

    龙龙是“饱了呀”外卖软件的注册骑手,负责送帕特小区的外卖。帕特小区的构造非常特别,都是双向道路且没有构成环 —— 你可以简单地认为小区的路构成了一棵树,根结点是外卖站,树上的结点就是要送餐的地址。
    每到中午 12 点,帕特小区就进入了点餐高峰。一开始,只有一两个地方点外卖,龙龙简单就送好了;但随着大数据的分析,龙龙被派了更多的单子,也就送得越来越累……
    看着一大堆订单,龙龙想知道,从外卖站出发,访问所有点了外卖的地方至少一次(这样才能把外卖送到)所需的最短路程的距离到底是多少?每次新增一个点外卖的地址,他就想估算一遍整体工作量,这样他就可以搞明白新增一个地址给他带来了多少负担。

  • 思路

    题目大意:每增加一个新的节点,就要求根节点到所有新增节点(包括之前的新增节点)的最短路径。

    方法:最短路径 = 经过的路径*2(因为要计算重复路径)-当前所有新增节点的最长路径。文章来源地址https://www.toymoban.com/news/detail-424702.html

    • 先DFS出每个点的深度
    • 再从给的点往上遍历,因为父节点唯一,所以叶节点去往根节点的路径唯一
      • 如果到了根节点,那就是深度
      • 如果在中途遇到了已经到过的点(比如之前遍历的时候就到过的点),那么就直接返回0,因为可以再送途中顺便送了
    • 最后结果减去当前最深深度,也就是不回去了
  • 代码

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    #undef int
    
    #define SZ(X) ((int)(X).size())
    #define ALL(X) (X).begin(), (X).end()
    #define IOS                                                                                                            \
        ios::sync_with_stdio(false);                                                                                       \
        cin.tie(nullptr);                                                                                                  \
        cout.tie(nullptr)
    #define DEBUG(X) cout << #X << ": " << X << '\n'
    typedef pair<int, int> PII;
    
    const int N = 1e5 + 10, INF = 0x3f3f3f3f;
    int n, m;
    
    vector <int> g[N];
    int depth[N], vis[N], fa[N];
    
    void dfs(int u, int x)
    {
        depth[u] = x;
        for(auto v : g[u]){
            dfs(v, x + 1);
        }
    }
    
    int dfs2(int u)
    {
        if(vis[u]) return 0;
        vis[u] = 1;
        return 1 + dfs2(fa[u]);
    }
    
    signed main()
    {
        IOS;
        cin >> n >> m;
        int root;
        for(int i = 1; i <= n; ++ i){
            int u;
            cin >> u;
            if(u != -1) g[u].push_back(i);
            else root = i;
            fa[i] = u;
        }
        int ans = 0;
    
        dfs(root, 0);
        vis[root] = 1;
    
        int mx = 0;
        while(m --){
            int x;
            cin >> x;
            ans += dfs2(x) * 2;
            mx = max(mx, depth[x]);
            cout << ans - mx << '\n';
        }
        return 0;
    }
    
    

到了这里,关于L2-043 龙龙送外卖的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI Powered SLS 智能分析能力创新

    随着云计算技术不断升级,承载业务的 IT 基础设施规模扩大,各个应用之间的链路关系变得越来越复杂,每时每刻都在产生海量级的日志。对日志数据的采集、存储与分析处理方式,是衡量企业系统数字化程度的重要标志。传统的 IT 运维方案也会面临非常大的挑战,对于

    2024年02月03日
    浏览(38)
  • 实例043 如何实现Office助手

    实例说明 用过Office的人都知道,Office助手是一个非常漂亮的小工具,有了它,即使对Office不太熟悉的用户也可以操作自如。本实例使用C#制作了一个类似Office助手的程序,实例效果如图1.44所示。 技术要点 要实现Office助手效果,需要使用Microsoft提供的第3方控件。在工具箱中单

    2024年02月11日
    浏览(30)
  • Enhance PDF Management with ChatGPT Powered AI

    January 16, 2024 IronPDF for .NET 2024.1.20 adds support for OpenAI extensions, allowing you to create PDF documents with the help of artificial intelligence. IronPDF for .NET empowers developers with a user-friendly C# library to generate, edit, and manage PDFs. It leverages a familiar HTML/CSS foundation for effortless PDF creation, while also offering rob

    2024年01月22日
    浏览(40)
  • 043:mapboxGL鼠标点击提示source属性信息

    第043个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中通过鼠标点击提示source属性信息。这里用到了popup弹窗,用到了click事件,用到了鼠标样式的变化等功能。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 示例效果

    2024年02月08日
    浏览(28)
  • 【PTA】L1-043 阅览室(C++)

    题目链接:L1-043 阅览室 - 团体程序设计天梯赛-练习集 (pintia.cn)  目录: 题目要求: 输入格式: 输出格式: 输入样例: 输出样例:  思路: 代码:; 测试结果: 天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下 S 键,程序开始

    2024年04月15日
    浏览(84)
  • Discuz论坛网站标题栏Powered by Discuz!版权信息如何去除或是修改?

    当我们搭建好DZ论坛网站后,为了美化网站,想把标题栏的Powered by Discuz!去除或是修改,应该如何操作呢?今天飞飞和你分享,在操作前务必把网站源码和数据库都备份到本地或是网盘。   Discuz的版权信息存在两处地方,一个是标题栏,一个是底部。一般为了美化修改个标

    2024年02月08日
    浏览(83)
  • 编程笔记 html5&css&js 043 CSS尺寸属性

    块的宽度和高度,决定了块的大小,也就是尺寸。 height 和 width 属性用于设置元素的高度和宽度。height 和 width 属性不包括内边距、边框或外边距。它设置的是元素内边距、边框以及外边距内的区域的高度或宽度。 height 和 width 属性可设置如下值: auto - 默认。浏览器计算高度

    2024年01月21日
    浏览(52)
  • 【leetcode100-042/043】【二叉树】二叉搜索树的转换和验证

    【转换】 给你一个整数数组  nums  ,其中元素已经按  升序  排列,请你将其转换为一棵  高度平衡  二叉搜索树。 高度平衡  二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 思路: 可以说是递归板子题了。每次把数组切两半,中间

    2024年01月20日
    浏览(36)
  • OpenAI 的 AI 安全负责人:LLM 支持的自主代理 LLM Powered Autonomous Agents

    目录 LLM 支持的自主代理 Agent System Overview 代理系统概述 Planning 规划 Memory 记忆 Tool use 工具使用

    2024年02月09日
    浏览(43)
  • (C#) IIS 响应标头过滤敏感信息(如:Server/X-Powered-By等) 运维知识

    再一次净网行动中,客户要求安全改造发现了接口请求的header标头中出现如图中的敏感信息。   其意义在于告知浏网站是用什么语言或者框架编写的。解决办法就是修改该响应头为一个错误的值,将攻击者导向一个错误的方向。 这里只说windows 的iis环境,不考虑其他服务器的

    2024年02月11日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包