神spfa [Noi2014]魔法森林

inferCNV包安装问题及解决办法 InferCNV是一个由broad研究所开发的,利用单细胞转录组数据分析肿瘤细胞拷贝数变异(CNV)的工具。基本思路是在整个基因组范围内,通过计算肿瘤细胞关于参考的“正常”细胞的相对表达,利用滑窗思想对邻近的基因相对表达,计算拷贝数。 先贴一个官方安装说明: 官方infercnv安装说明 安装infercnv包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager: 阅读详情
   

问题 G: [Noi2014]魔法森林

时间限制: 30 Sec  内存限制: 512 MB

题目描述

为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在号节点1,隐士则住在号节点N。小E需要通过这一片魔法森林,才能够拜访到隐士。

魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻击。幸运的是,在号节点住着两种守护精灵:A型守护精灵与B型守护精灵。小E可以借助它们的力量,达到自己的目的。

只要小E带上足够多的守护精灵,妖怪们就不会发起攻击了。具体来说,无向图中的每一条边Ei包含两个权值Ai与Bi。若身上携带的A型守护精灵个数不少于Ai,且B型守护精灵个数不少于Bi,这条边上的妖怪就不会对通过这条边的人发起攻击。当且仅当通过这片魔法森林的过程中没有任意一条边的妖怪向小E发起攻击,他才能成功找到隐士。

由于携带守护精灵是一件非常麻烦的事,小E想要知道,要能够成功拜访到隐士,最少需要携带守护精灵的总个数。守护精灵的总个数为A型守护精灵的个数与B型守护精灵的个数之和。

输入

第1行包含两个整数N,M,表示无向图共有N个节点,M条边。 接下来M行,第行包含4个正整数Xi,Yi,Ai,Bi,描述第i条无向边。其中Xi与Yi为该边两个端点的标号,Ai与Bi的含义如题所述。 注意数据中可能包含重边与自环。

输出

输出一行一个整数:如果小E可以成功拜访到隐士,输出小E最少需要携带的守护精灵的总个数;如果无论如何小E都无法拜访到隐士,输出“-1”(不含引号)。

样例输入

【输入样例1】4 51 2 19 12 3 8 122 4 12 151 3 17 83 4 1 17  【输入样例2】 3 11 2 1 1 

样例输出

【输出样例1】 32【样例说明1】如果小E走路径1→2→4,需要携带19+15=34个守护精灵;如果小E走路径1→3→4,需要携带17+17=34个守护精灵;如果小E走路径1→2→3→4,需要携带19+17=36个守护精灵;如果小E走路径1→3→2→4,需要携带17+15=32个守护精灵。综上所述,小E最少需要携带32个守护精灵。【输出样例2】 -1【样例说明2】小E无法从1号节点到达3号节点,故输出-1。 

提示

2<=n<=50,000

0<=m<=100,000

1<=ai ,bi<=50,000

   a,b不能同时被考虑到,而且有一个结论能推出,若枚举a(即规定当前路线的最大a为多少),求最小的b,随着a的变大,b不递增。因为如果a变大,加入了更大的b,那一定不是最优。

   那就可以这样了,从最小到大枚举a,dis[]存b,更新dis[n],用dis[n]+a[i]更新ans.

    优化:根据当前a[i]的值,只建a<=a[i]的边,这样可以吧建边缩到最小,而且每次spfa不会遇到当前不合法的边。

   

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define N 50000
using namespace std;
int n,m,adj[N+5],ans=1000000000,sz,A[N+5];
int dis[N+5],v[N+5],e;
struct road
{
    int v,next,a,b;
} lu[N*2+5];
struct node
{
    int x,y,a,b;
} f[N*2+5];
inline int cmp(const node &a,const node &b)
{
    return a.a<b.a;
}
queue<int> q;
void add(int u,int v,int a,int b)
{lu[++e].v=v;lu[e].a=a;lu[e].b=b;lu[e].next=adj[u];adj[u]=e;}
void spfa()
{
    while(!q.empty())
    {
        int x=q.front();q.pop();
        for(int i=adj[x];i;i=lu[i].next)
        {
            int to=lu[i].v,k=max(lu[i].b,dis[x]);
            if(k<dis[to])
            {
                dis[to]=k;
                if(!v[to])
                {
                    v[to]=1;
                    q.push(to);
                }
            }
        }
        v[x]=0;
    }
}
int main()
{
    //freopen("magicalforest.in","r",stdin);
    //freopen("magicalforest.out","w",stdout);
    scanf("%d%d",&n,&m);
    int x,y,a1,b1;
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d%d",&f[i].x,&f[i].y,&f[i].a,&f[i].b);
        A[i]=f[i].a;
    }
    sort(f+1,f+m+1,cmp);
    sort(A+1,A+m+1);sz=unique(A+1,A+m+1)-A-1;
    int hh=1;
    memset(dis,40,sizeof(dis));dis[1]=0;
    for(int i=1;i<=sz;i++)
    {
        for(int j=hh;j<=m+1;j++)
        {
            if(j==m+1){hh=m+2;break;}
            if(f[j].a>A[i]){hh=j;break;}
            add(f[j].x,f[j].y,f[j].a,f[j].b);
            add(f[j].y,f[j].x,f[j].a,f[j].b);
            q.push(f[j].x);v[f[j].x]=1;
            q.push(f[j].y);v[f[j].y]=1;
        }
        int h=dis[n];
        spfa();
        if(h>dis[n])
           ans=min(ans,dis[n]+A[i]);
    }
    if(ans==1000000000)cout<<-1<<endl;
    else printf("%d\n",ans);
}

Unity Scriptable Build Pipeline (SBP) 详解 Unity 的可编程构建管线(Scriptable Build Pipeline, SBP)标志着引擎构建架构的一次关键转变,它从不透明的 C++ 实现转向了灵活、可扩展的 C# 框架。SBP 旨在满足现代游戏开发日益增长的需求,通过改进增量处理和高效缓存机制显著提升了构建性能。它赋予开发者对内容构建过程前所未有的控制力,从而能够针对特定项目需求进行深度定制。尽管 SBP 是 Unity 推荐的 Addressables 系统的重要基础层,但理解其核心组件、构建流程和高级功能对于优化大型项目、简化 CI/C 阅读详情

相关推荐

ESXI 7 :创建统信V20_1050d服务器系统虚拟机

记录一下在 X86 架构创建统信V20_1050d 虚拟机遇到的问题。已遇到的问题有①:常规服务器环境下网络连接失败重点:按照桌面版本,有问题处理简单。

guyuelin123的博客 1968

NOI2014B. 魔法森林 (Magical Forest)

NOI2014B. 魔法森林 (Magical Forest)

yaosichengalpha的博客 347

PRPD图谱分析从入门到精通:5种典型放电模式的识别手册

本文详细解析PRPD图谱分析技术,重点介绍电晕放电、悬浮放电等5种典型放电模式的识别方法。通过37组真实案例对比,提供关键识别区和诊断流程图模板,帮助工程师快速掌握变电站设备状态监测的核心技能,提升绝缘缺陷诊断准确率。

weixin_29214199的博客 473

【NOI 2014】魔法森林

算法标签:LCT维护最小生成树中最大的边

forever_dreams的博客 466

取证实战:当嫌疑人电脑已关机,如何利用EFDD从休眠文件提取BitLocker密钥?

本文详细介绍了如何利用Elcomsoft Forensic Disk Decryptor(EFDD)从休眠文件(hiberfil.sys)中提取BitLocker密钥的实战技术。通过分析休眠文件中的内存快照,取证人员可以突破已关机加密设备的防线,获取关键解密信息。文章涵盖了工具配置、镜像获取、密钥提取及验证等完整流程,并提供了疑难问题解决方案和法律合规建议。

weixin_29315091的博客 345

关于获取CISP-PTE一些避坑经历

考场内是不允许携带外设键盘的,现场会至少有一个360安全专业人员监考.所有人电脑都会提前装一个奇安信的一个考试exe,刚开始的时候会让你连接一个WIFI,我们将会通过WIFI进行做题,做题期间你的电脑将被全程监控并且一些退出快捷键也是全部锁死(有点像勒索病毒那种界面),想要重启必须直接拔电源。中途可以上厕所,需要监考官陪同

6322

#3. 【NOI2014】魔法森林

#3. 【NOI2014】魔法森林序言题目描述解析 序言 UOJUOJUOJ果然是神仙OJOJOJ啊 里面个个都是人才,说话还好听 题目的hackhackhack数据还可以hackhackhack掉网上一大片的题解… 题目描述 为了得到书法大家的真传,小EEE同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个NNN节点MMM条边的无向图,节点标号为1…n1…n1…n,边标号为1…...

rp++ 1451

Ubuntu使用gstreamer开发USB相机应用(一)

Ubuntu使用gstreamer开发USB相机应用(一) 包括:gstreamer安装,测试。使用v4l2测试USB相机。使用gstreamer采集相机

Alon1787的博客 2739

[BZOJ3669][Noi2014]魔法森林(动态spfa)

说好的LCT训练呐

薇小薇 498

科研绘图系列:R语言绘制宏基因组分析的可视化图形(network & barplot & heatmap)

科研绘图系列:R语言多图形组合(network & barplot & heatmap)

专注生信领域 644

机器人控制算法九之 位姿描述与空间变换

机器人控制算法九之 位姿描述与空间变换

yohnyang的博客 1034

【NOI2014】魔法森林

【NOI2014】魔法森林 【题目描述】 小H最近在研究随机算法。随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来获得随机性。事实上,随机数生成函数也并不是真正的“随机”,其一般都是利用某个算法计算得来的。比如,下面这个二次多项式递推算法就是一个常用算法:算法选定非负整数 x0,a,b,c,d 作为随机种子,并采用如下递推公式进行计算:

OI技术宅 2519

微信小程序 - request:fail errcode:10011 cronet_error_code:0 error_msg:network change, cancel all task请求报错

微信小程序请求接口,报request:fail errcode:10011是什么原因,uniapp微信小程序request:fail errcode:10011 cronet_error_code:0 error_msg:network change, cancel all task,微信小程序wx.request常规访问接口,有个别用户的接口请求频繁报错,UniApp 微信小程序uni.request请求接口报错:request:fail errcode:10011 的原因分析与解决方案,苹果ios,安卓

🏆 前端领域优质创作者 4567

【BZOJ3669】【NOI2014】魔法森林 (spfa动态队列加点算法)

优化: 1 . 不对dist数组进行更新(单调性保证)(否则狂TLE) 2 . 随a权值递增而加边,同时在函数外让点入队 (否则狂WA) 3 . 对a权值排序然后进行枚举。(否则有可能常数TLE) 以下为非必须优化: 4 . 对边进行边权排序,加边时可以保证线性时间复杂度 5 . 对SPFA(Dijsktra)进行优先队列优化(堆优化)。(因

辗转山河弋流歌 2624

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【bzoj3669】【noi2014】【魔法森林】【spfa】

Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在号节点1,隐士则住在号节点N。小E需要通过这一片魔法森林,才能够拜访到隐士。 魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻击。幸运的是,在号节点住着两种

sunshinezff的专栏 1046

怀旧版电脑GBC模拟器

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

【动态加边spfa】[Noi2014] bzoj3669 魔法森林 forest

题目点这里 题意:一个图1为起点N为终点 每条边有两个权值ai, bi 求一条路径使整条路径上的max(ai) + max(bi)最小 。。。LCT。。不会。。。= = 昨天才看到有人在群里讨论这道题。。。。。然后一直不知道他们在说啥…… 听说这道题的数据太水 当时全场乱搞 有角虫写dfs过了…… 。。而我直接看错题了。。。。我求成总和了。。。。写了个Astar。

每天心塞一点点 648

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

bzoj-3669: [Noi2014]魔法森林

3669: [Noi2014]魔法森林 Time Limit:30 SecMemory Limit:512 MB Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在号节点1,隐士则住在号节点N。小E需要通过这一片魔法森林,...

aln1541的博客 170

NOI2014 魔法森林

Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在号节点1,隐士则住在号节点N。小E需要通过这一片魔法森林,才能够拜访到隐士。魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻击。幸运的是,在号节点住着两种守护精灵:A型守...

DancingZ的博客 306

bzoj #3669 魔法森林(SPFA/LCT)(NOI2014)

标签:SPFA/LCT Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 3139  Solved: 1984[Submit][Status][Discuss]Description为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在

P1atform的博客 432

bzoj 3669: [Noi2014]魔法森林

Description为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在1号节点,隐士则住在号节点N。小E需要通过这一片魔法森林,才能够拜访到隐士。 魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻击。幸运的是,在1号节点住着两种守护精灵:A型守

Time_major 863

BZOJ 3669 NOI2014 魔法森林 SPFA

题目大意: 给定一个无向图,每条边有两个权值ai和bi,从1走到N,设路径上a权的最大值为A,b权的最大值为B,求A+B的最小值 首先这题如果只有一个权值就是水题无误……但是多了个权值之后我们就要好好考虑一下了 我们对a排序,枚举a,对于每一次枚举求b权最大值的最小值即可 跑M遍SPFA肯定超时无误 网上很多人写了LInk-Cut-Tree维护动态最小生成树 我的LCT没写明白 就去写了S

世界 4012

bzoj3669【NOI2014】魔法森林 SPFA

调了一整个晚上一脸懵逼,加了个并查集优化就WA了= =,然而并没能发现 题意就是两个点权的最短路,标准做法LCT维护,当然我们考虑这是随机数据,我们可以用SPFA水 枚举其中一个点权,然后做另外一个点权的最短路,同时需要用许多优化防止TLE 比如因为单调性,于是每次SPFA并不需要把dis数组清0,用优先队列来维护每一次放进去的点不然写起来全是WA之类的 /****************

BPM136 990

Bzoj3669 [Noi2014]魔法森林

Time Limit:30 SecMemory Limit:512 MBSubmit:2458Solved:1529 Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在号节点1,隐士则住在号节点N。小E需要通过这一片魔法...

dezhen7015的博客 132

BZOJ3669 [Noi2014]魔法森林(SPFA+动态加边)

本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作。 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成...

dgoh41514的博客 140

「NOI2014」 魔法森林 - 动态树LCT

题目描述 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个NNN节点MMM条边的无向图,节点标号为1⋯N1\cdots N1⋯N,边标号为1⋯M1\cdots M1⋯M。初始时小E同学在号节点111,隐士则住在号节点NNN。小E需要通过这一片魔法森林,才能够拜访到隐士。 魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻...

TbYangZ的博客 371

【JZOJ3754】【luoguP2387】【NOI2014】魔法森林

problem Description 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为1,2,3, … , n,边标号为 1,2,3, … , m。初始时小 E 同学在 1 号节点,隐士则住在 n 号节点。小 E 需要通过这一片魔法森林,才能够拜访到隐士。 魔法森林中居住了一些妖怪。每当有人经过一条...

路人黑的纸巾 590
上一篇: 二维spfa [JLOI2011]飞行路线
下一篇: 并查集 Travel
QTY_
博客等级 码龄9年 13粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值