“蔚来杯“2022牛客暑期多校训练营3

YOLOv8中Bottleneck模块详解 Bottleneck 模块在YOLOv8中的作用是进行特征提取和增强,是网络中的核心构建模块之一。它的主要功能是通过卷积操作来处理输入特征图,并在适当情况下应用残差连接,使得信息能够有效地通过网络层进行传播 阅读详情

"蔚来杯"2022牛客暑期多校训练营3

C Concatenation

题目大意

给定n个字符串,求一个将他们拼接起来的方案,使得结果的字典序最小。

题解

对n个字符串排序,a比b小的条件是a+b<b+a。

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 6;
bool cmp(const string &a, const string &b)
{
    return a + b < b + a;
}
string s[maxn];
int n;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> s[i];
    sort(s, s + n, cmp);
    for (int i = 0; i < n; i++)
    {
        cout << s[i];
    }
    return 0;
}

J Journey

题目大意

给定一个城市有若干十字路口,右转不需要等红灯,直行、左转和掉头都需要,求起点到终点最少等几次红灯。

题解

建图:把每个十字路口的四个方向的路口信息存储在一个数组中。

然后 bfs 求出最短路径。

bfs的细节:

1、定义一个dis数组,存储从起点到当前点的距离信息(例如dis[i] [j]表示从与j路口相邻的第i个路口这个方向,到j这个路口,距起点的距离);定义一个vis数组,存储入队信息(spfa),vis数组表示的信息类似于dis数组。

2、初始化dis[相对于s2,s1在s2的哪个方向] [s2]为0,vis[相对于s2,s1在s2的哪个方向] [s2]为1。

3、对于队首元素,遍历它的每个方向,更新dis和vis,即spfa。

4、最后如果dis[相对于t2,t1在t2的哪个方向] [t2]更新过,则输出答案,否则输出-1。

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 5;
const int Max = 0x3f3f3f3f;
typedef pair<int, int> P;
int n, s1, s2, t1, t2, dir1, dir2;
struct Node
{
    int a[5];
} e[maxn];
int dis[5][maxn];
bool vis[5][maxn];
void bfs()
{
    queue<P> q;
    for (int i = 1; i <= 4; i++)
        if (e[s2].a[i] == s1)
            dir1 = i;
    for (int i = 1; i <= 4; i++)
        if (e[t2].a[i] == t1)
            dir2 = i;
    q.push(P(dir1, s2));
    vis[dir1][s2] = 1;
    dis[dir1][s2] = 0;
    while (!q.empty())
    {
        P now = q.front();
        q.pop();
        int start = now.second, tdir = now.first;
        vis[tdir][start] = 0;
        for (int i = 1; i <= 4; i++)
        {
            int w = 1, v = e[start].a[i], vdir;
            if (v == 0)
                continue;
            if (i == tdir % 4 + 1)
                w = 0;
            for (int j = 1; j <= 4; j++)
                if (e[v].a[j] == start)
                    vdir = j;
            if (dis[vdir][v] > dis[tdir][start] + w)
            {
                dis[vdir][v] = dis[tdir][start] + w;
                if (!vis[vdir][v])
                    q.push(P(vdir, v)), vis[vdir][v] = 1;
            }
        }
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    memset(dis, Max, sizeof dis);
    cin >> n;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= 4; j++)
            cin >> e[i].a[j];
    cin >> s1 >> s2 >> t1 >> t2;
    bfs();
    if (dis[dir2][t2] != Max)
        cout << dis[dir2][t2] << endl;
    else
        cout << -1 << endl;
    return 0;
}

A Ancestor

题目大意

给出两棵编号1-n的树A和B,A、B树上每个节点均有一个权值,给出k个关键点的编号x1…xn,问有多少种方案使得去掉恰好一个关键点使得剩余关键点在树A上LCA的权值大于树B上LCA的权值。

题解

树剖求LCA。

预处理出关键点序列在树A、B上的前缀LCA和后缀LCA,枚举去掉的关键节点并使用前后缀LCA算出剩余节点的LCA比较权值即可。

前缀LCA指前n个点的LCA,后缀LCA指后n个点的LCA。

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int va[maxn], vb[maxn], x[maxn];
int n, k, res;
struct tree
{
    vector<int> g[maxn];
    int fa[maxn], size[maxn], top[maxn], mson[maxn], deep[maxn];
    int pre[maxn], lst[maxn];
    void add(int x, int y)
    {
        g[x].push_back(y);
    }
    void dfs(int x)
    {
        size[x] = 1;
        for (int i = 0; i < g[x].size(); i++)
        {
            int y = g[x][i];
            fa[y] = x;
            deep[y] = deep[x] + 1;
            dfs(y);
            size[x] += size[y];
            if (size[y] > size[mson[x]])
                mson[x] = y;
        }
    }
    void dfs(int x, int y)
    {
        top[x] = y;
        if (mson[x])
            dfs(mson[x], y);
        for (int i = 0; i < g[x].size(); i++)
        {
            int y = g[x][i];
            if (y == mson[x])
                continue;
            dfs(y, y);
        }
    }
    int lca(int x, int y)
    {
        while (top[x] != top[y])
        {
            if (deep[top[x]] < deep[top[y]])
                swap(x, y);
            x = fa[top[x]];
        }
        if (deep[x] < deep[y])
            return x;
        return y;
    }
    void predo()
    {
        dfs(1);
        dfs(1, 1);
        pre[1] = x[1];
        for (int i = 2; i <= k; i++)
        {
            pre[i] = lca(pre[i - 1], x[i]);
        }
        lst[k] = x[k];
        for (int i = k - 1; i >= 1; i--)
        {
            lst[i] = lca(lst[i + 1], x[i]);
        }
    }
    int getlca(int x)
    {
        if (x == 1)
            return lst[2];
        if (x == k)
            return pre[k - 1];
        return lca(pre[x - 1], lst[x + 1]);
    }
} a, b;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> k;
    for (int i = 1; i <= k; i++)
        cin >> x[i];
    for (int i = 1; i <= n; i++)
        cin >> va[i];
    for (int i = 2; i <= n; i++)
    {
        int fa;
        cin >> fa;
        a.add(fa, i);
    }
    for (int i = 1; i <= n; i++)
        cin >> vb[i];
    for (int i = 2; i <= n; i++)
    {
        int fb;
        cin >> fb;
        b.add(fb, i);
    }
    a.predo();
    b.predo();
    for (int i = 1; i <= k; i++)
    {
        int wa = a.getlca(i), wb = b.getlca(i);
        if (va[wa] > vb[wb])
            res++;
    }
    cout << res << endl;
}

F Fief

题目大意

给定一个无向图,每次询问两点x、y,求是否存在一个n的排列,使得第一个元素为x,最后一个元素为y,且排列的任意一个前缀、任意一个后缀都连通(前缀不包括y,后缀不包括x)。

题解

代码

未完

html2canvas - 解决截图后引入的字体样式丢失问题,第三方字体截图导出图片后字体失效,html2canvas截屏生成图片后艺术字体就丢失并且自动转成常规字体了,特殊字体显示不了无法截图怎么办 vue2,vue3,uniapp,html2canvas截图后引入的字体样式丢失,html2canvas艺术字截图不显示,使用外部字体无效,html2canvas无法识别网络字体文件怎么办,ttf文件,网页使用在线字体链接利用html2canvas无法截取,字体样式没有了,font-family第三方字体,@font-face引入本地字体文件后无法被html2canvas识别怎么办,html2canvas文字消失,vue页面正常显示艺术字体但截屏后没有,html2canvas截图存在特殊字体时截图不全,默认 阅读详情

相关推荐

完整指南:从基础到高级使用 Semantic Kernel

通过本文的学习,你已经掌握了从基础到高级的使用方法。安装并配置。使用简单的文本生成和自然语言处理任务。利用任务链和工具扩展构建复杂的工作流。通过记忆管理上下文,创建更智能的应用。扩展多模态处理能力,集成图像和音频分析。将应用部署到云端,并通过 Azure Functions 提供智能服务。无论是构建简单的对话应用,还是创建多模态智能服务,都提供了强大的工具和灵活的扩展机制。希望这篇文章能帮助你更好地理解并运用这个框架,构建出更加智能和高效的应用。

net core ,前端 ,python 全栈开发 2805

“蔚来杯”2022牛客暑假多校训练营部分题解 3

对牛客多校的部分题做一些记录 3

Log_x's Blog 757

单细胞测序流程(八)单细胞的marker基因转化和​GO富集分析

系列文章目录 单细胞测序流程(一)简介与数据下载 单细胞测序流程(二)数据整理 单细胞测序流程(三)质控和数据过滤——Seurat包分析,小提琴图和基因离差散点图 单细胞测序流程(四)主成分分析——PCA 单细胞测序流程(五)t-sne聚类分析和寻找marker基因 单细胞测序流程(六)单细胞的细胞类型的注释 单细胞测序流程(七)单细胞的细胞类型轨迹分析———————————————— 本期主讲内容——单细胞的maeker基因转化和​富集分析 marker基因转化是为了将基因的id和基.

qq_45478665的博客 1万+

“蔚来杯“2022牛客暑期多校训练营3 H.Hacker SAM+线段树/DP/分治(不带修查区间最大子段和)

给定母串以及若干子串,子串长度固定,每个位置都有一个权值,要求在子串和母串的公共子串中找到一个连续区间,使得连续区间的权值和最大,求最大权值和。每次找到合法区间,直接线段树上查询并更新答案即可。与此同时,需要缩短当前长度。,分别表示当前状态以及匹配长度,一开始。现在我们来描述如何添加一个字符。...

HeartFireY的博客 526

避坑指南:CesiumLab+ENVI处理Sentinel-2影像数据的完整流程

本文提供了一份详细的避坑指南,完整介绍了如何利用CesiumLab和ENVI工具链,将Sentinel-2卫星影像处理成可供Cesium三维地球引擎加载的离线瓦片数据。内容涵盖数据获取、SNAP预处理、ENVI影像增强合成以及CesiumLab切片配置等全流程实战步骤与关键参数优化,旨在帮助工程师高效构建自主可控的高精度离线地图服务。

weixin_29248653的博客 289

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4371

“蔚来杯”2022牛客暑假多校训练营部分题解 1

对牛客多校的部分题做一些记录 1

Log_x's Blog 740

从零解析特斯拉线圈:谐振变压器的核心原理与DIY实践

本文深入解析特斯拉线圈的工作原理与DIY实践,从LC振荡电路到电磁耦合,详细介绍了谐振变压器的核心原理。通过材料清单、绕制技巧和安全指南,帮助爱好者从零开始打造迷你闪电发生器,体验高压电子实验的独特魅力。

weixin_33670786的博客 491

“蔚来杯“2022牛客暑期多校训练营3 补题题解(A、C、J)

赛后补的,不得不说这个题给的挺绕的,给定某个到达i点的四个点,刚开始一直在迷惑到底什么意思,理解题意理解了半天,不过好在最后理解了。依旧是队友的牛逼思路,对任意两个字符串排序,如果ab...

qiaodxs的博客 472

项目管理知识体系(PMBOK)中的质量规划详解

你是否遇到过这些场景?软件上线后用户投诉“功能漏洞多”,团队连夜返工;装修完的房子墙面开裂,施工方和业主互相推诿;新研发的手机电池续航不达标,被迫延迟发布。这些问题的根源,往往是项目启动时没有做好质量规划。本文聚焦PMBOK中“质量规划”(Plan Quality Management)过程,覆盖其核心概念、操作步骤、工具技术与实战应用,适用于IT、建筑、制造等各类项目场景。

项目管理的博客 1118

零基础DSP实战TMS320F28035:第九节,ADC比较器&EPWM

ADC比较器框图如下所示:-电压-----------------------------输出-电压A>电压B------------------ 1-电压A

sinat_30943509的博客 2535

“蔚来杯“2022牛客暑期多校训练营3,签到题CAJHF

题号标题已通过代码通过率团队的状态BBoss点击查看54/734DDirected点击查看62/157EElectrician点击查看18/38GGeometry点击查看73/1076IIceDrinking点击查看28/212。

小哈里的博客 3080

GNN(图神经网络)的 MATLAB 仿真

图神经网络(Graph Neural Network, GNN)是一种用于处理图结构数据的深度学习模型。GNN 通过聚合节点及其邻居的信息,能够有效捕捉图结构中的复杂关系,广泛应用于社交网络分析、推荐系统、化学分子分析等领域。GNN 通过消息传递机制聚合节点及其邻居的信息,能够有效处理图结构数据。MATLAB 仿真展示了 GNN 的基本流程和节点分类性能,适用于社交网络分析、推荐系统、化学分子分析和知识图谱等多种应用场景。

走向CTO的路上... 837

“蔚来杯“2022牛客暑期多校训练营3 ACFHJ

给出两棵编号1−n1-n1−n的树A,BA,BA,B,A,BA,BA,B树上每个节点均有一个权值,给出kkk个关键点的编号x1…xnx_1…x_nx1​…xn​,问有多少种方案使得去掉恰好一个关键点使得剩余关键点在树AAA上LCALCALCA的权值大于树BBB上LCALCALCA的权值。处理出所有关键节点的前缀LCALCALCA和后缀LCALCALCA,然后枚举所有的关键节点求LCALCALCA后CheckCheckCheck计数即可。 C.Concatenation 签到? 题目分析 排序规则A+B...

HeartFireY的博客 612

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

“蔚来杯“2022牛客暑期多校训练营3 ADF题解

记录了ADF题的题解

Shanhj的博客 477

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

“蔚来杯“2022牛客暑期多校训练营3 F Fief

题意为给定一个n个点m条边的无向图,给出q个询问,每个询问给出起点x和终点y,问对于每一个询问,是否可以找到一个n个点的排列,使得以x开始,以y结尾,对于这个排列的任意前缀和后缀都是联通的。比如这个样例,询问1 4,就有排列1 2 3 4是符合条件的,因为前缀(12)(123)(1234)和后缀。比如2 1 3 4,后面是无法在不经过2的条件下到1的,所以必须是双端点才成立。也就是只要有缩点后的节点度>2,也就是有分支,那么是不存在答案的。对于环状图,显然是必定成立的,而对于不连通图,显然是不成立的。...

m0_61735576的博客 343

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

“蔚来杯“2022牛客暑期多校训练营3 J. Journey

输入是一个方向矩阵,每行4个数代表十字路口的4个方向,按逆时针排序,因为右转的相对的,所以你随便取一个方向固定这个图即可。当然这只是方便你画出来理解题意,样例解释已经告诉我们怎么判断右转,直接用即可。题意(难懂警告,无论是原题体面还是我的解释)某个人要开车去找朋友,每过路口必逢红灯,他想利用右转忽略红灯的规则,要算最少遇到几个红灯。然后为了理解题意,我大概画了一下,可以看到按照这种走法,只有最后掉头遇到一个红灯。队友觉得嗯搜过不去,但是我这个彩笔补题时发现直接广搜即可。...

m0_52065936的博客 188

“蔚来杯“2022牛客暑期多校训练营3 题解

题意:给你两棵树A和B,点的编号从1到n,根结点是1,且每个点都有一个价值,现在给你k个点,选任意k-1个不同的点,分别求这些点在两颗树上的最近公共祖先fa, fb,问存在多少种情况满足A树上fa的价值大于B树上fb的价值。思路:有一个结论是:求树上多个点的LCA的方法是求这些点在树上的dfs序的最小值的点和最大值的点的LCA。所以我们求出来两颗树的dfs序后,将k个点按照dfs序的大小来排序后,离线处理,再按照上面的结论进行计算就行。思路:给出几个数字段,求能组成的字典序最小的字符串。

qq_53351374的博客 200

“蔚来杯“2022牛客暑期多校训练营3补题

Concatenation

A______2333的博客 219

“蔚来杯“2022牛客暑期多校训练营3 C、A

“蔚来杯“2022牛客暑期多校训练营3

eyuhaobanga的博客 115

“蔚来杯“2022牛客暑期多校训练营3 F - Fief (点双连通算法)

"蔚来杯"2022牛客暑期多校训练营3F-Fief(点双连通算法)

酒姬民的博客 597

“蔚来杯“2022牛客暑期多校训练营3 A.Ancestor LCA+暴力计数

问有多少种方案使得去掉恰好一个关键点使得剩余关键点在树。树上每个节点均有一个权值,给出。,然后枚举所有的关键节点求。处理出所有关键节点的前缀。

HeartFireY的博客 359
上一篇: 2022“杭电杯”中国大学生算法设计超级联赛(1)补题
下一篇: 2022“杭电杯”中国大学生算法设计超级联赛(2)
Troyyee
博客等级 码龄5年 5粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值