atcoder ABC237-E Skiing
atcoder ABC237-E Skiing
这题把一个点到另外一个点的开心值变为这条边的权值,就可以化为求最大路。因为有负边权,所以要用\(SPFA\),但\(SPFA\)这玄学的时间复杂度,会\(wa\)一个点,就很烦。

我们作一个图,如下:

我们把下降的距离设为\(down\),把上升距离的设为\(up\),这里的\(up\)和\(down\)为真实距离。
所以不难发现此式:
\]
\]
又开心值计算公式为:
\]
将\(down\)带入为:
\]
所以我们可以把上升的边权换为\(up\),下降的边权换为0。
用堆优化DIJ来求一个最短路,而到每个点的开心值就是\(h_x-h_y-dis_y\)。
因为你去到某个点的开心值为正,那么回去1号点的开心值就一定不为正。
CODE
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=2*1e5+5;
struct node
{
ll to,nxt,val;
}edge[maxn*2];
ll INF=1e18;
ll n,m,tot,ans;
ll h[maxn],head[maxn],dis[maxn],vis[maxn];
priority_queue< pair<int,int> >q;
void add(ll x,ll y,ll z)
{
++tot;
edge[tot].to=y;
edge[tot].val=z;
edge[tot].nxt=head[x];
head[x]=tot;
}
void dij()
{
for(int i=1;i<=n;i++) dis[i]=INF;
dis[1]=0;
q.push({-dis[1],1});
for(int i=1;i<=n;i++)
{
if(q.empty()==1) return ;
while(vis[q.top().second])//堆优化
{
q.pop();
}
vis[q.top().second]=1;
pair<int,int> k=q.top();
q.pop();
k.first=-k.first;
ans=max(ans,h[1]-h[k.second]-dis[k.second]);
for(int j=head[k.second];j;j=edge[j].nxt)
{
ll v=edge[j].to;
if(dis[v]>dis[k.second]+edge[j].val)
{
dis[v]=dis[k.second]+edge[j].val;
q.push({-dis[v],v});
}
}
}
}
int main()
{
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%lld",&h[i]);
}
for(int i=1;i<=m;i++)//初始化图
{
ll x,y;
scanf("%lld%lld",&x,&y);
add(x,y,max((long long)0,h[y]-h[x]));
add(y,x,max((long long)0,h[x]-h[y]));
}
dij();
printf("%lld",ans);
}
atcoder ABC237-E Skiing的更多相关文章
- 2022年5月5日模拟赛题解与总结(ABC237)
总结 初一第一,竞赛班第二 还可以,为了照顾提高班来的四个同学放了四个水题,可惜他们做的不是很理想,希望他们下次可以获得满意的成绩 这次做的其实是 AtCoder ABC237 A.Not Overf ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Grand Contest 001 C Shorten Diameter 树的直径知识
链接:http://agc001.contest.atcoder.jp/tasks/agc001_c 题解(官方): We use the following well-known fact abou ...
- nyoj 10 skiing(记忆化搜索)
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- skiing(搜索+记忆化搜索)
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- NYOJ10,skiing
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪, 由于滑雪的确非常刺激.但是为了获得速度,滑的区域必须向下倾斜,并且 ...
- ACM Skiing问题
ACM Skiing问题 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michae ...
- 2017 ACM-ICPC(乌鲁木齐赛区)网络赛 H.Skiing 拓扑排序+最长路
H.Skiing In this winter holiday, Bob has a plan for skiing at the mountain resort. This ski resort h ...
- AtCoder Regular Contest 082
我都出了F了……结果并没有出E……atcoder让我差4分上橙是啥意思啊…… C - Together 题意:把每个数加1或减1或不变求最大众数. #include<cstdio> #in ...
- AtCoder Regular Contest 069 D
D - Menagerie Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement Snuke, w ...
随机推荐
- 折腾 Quickwit,Rust 编写的分布式搜索引擎(专为从对象存储中实现亚秒级搜索而设计)
什么是 Quickwit? Quickwit 是首个能在云端存储上直接执行复杂的搜索与分析查询的引擎,并且具有亚秒级延迟.它借助 Rust 语言和分离计算与存储的架构设计,旨在实现资源高效利用.易于操 ...
- 为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
大家好,我是码农先森. 谈到这个话题有些朋友心中不免会有疑惑,为什么是 Swoole 而不是其他呢?因为 Swoole 是基于 C/C++ 语言开发的高性能异步通信扩展,覆盖的特性足够的多,有利于 P ...
- 【面试题】Java中子类和父类静态代码块、非静态代码块、构造函数的执行顺序总结一览表
在面试的时候,有时候我们会被问到这样的问题:子类A继承父类B,A a = new A();则父类B的构造函数.父类B静态代码块.父类B非静态代码块.子类A构造函数.子类A静态代码块.子类A非静态代码块 ...
- Allen基因图谱:python Aabgen的安装
1. abagen 使用教程的官方链接:abagen: A toolbox for the Allen Brain Atlas genetics data - abagen 0.1.3-doc+0.g ...
- windows服务器使用 azure devops 批量自动发布网站到IIS
最近由于一个API项目,需要利用负载均衡来做支撑,因此需要将同一份代码分发到多个服务器,之前一直手工干这个活,感觉太累了,去开发交流群,还有搜索了一下资料,发现很多人推荐我用ftp.还有磁盘共享等这种 ...
- 亮相CCIG2024,合合信息文档解析技术破解大模型语料“饥荒”难题
近日,2024中国图象图形大会在古都西安盛大开幕.本届大会由中国图象图形学学会主办,空军军医大学.西安交通大学.西北工业大学承办,通过二十多场论坛.百余项成果,集中展示了生成式人工智能.大模型 ...
- SQL Server – 树结构 (二叉树, 红黑树, B-树, B+树)
前言 很久以前有学习过各种树结构, 但后来真的没有在实际项目中运用到. 毕竟我主要负责的都是写业务代码. 太上层了 但是忘光光还是很可惜的. 所以久久可以复习一下. 记得概念也好, 帮助思考. 参考: ...
- 对于ChannelNet的一点理解
主要是为了个人理解,做个笔记 1.Pytorch代码 2.论文出处 3.详细介绍 这篇论文在2018年发出来,而ShuffleNet是从2017年由旷视发出来.起初了解shufflenet的提出,主要 ...
- 【官宣】2024 DTC数据技术嘉年华全议程发布:汇聚行业精英,共襄年度盛宴
龙腾四海内,风云际会时.由墨天轮数据社区和中国数据库联盟(ACDU)主办的第十三届数据技术嘉年华 将于2024年4月12日至13日在北京新云南皇冠假日酒店盛大召开.本次大会的主题是"智能·云 ...
- iOS中搜索框EVNCustomSearchBar使用小结
最近在项目开发中用到了搜索框,之前都是用的系统的searchbar,现有项目中用的是EVNCustomSearchBar,我试了一下还挺方便,下面说一下具体的用法. 第一步:引入添加相关的委托代理EV ...