P7984 [USACO21DEC] Tickets P 题解

题目传送门

前置知识

线段树优化建图 | 最短路

解法

考虑对票建虚点,从 \(c_{i}\)\(i+n\) 连一条权值为 \(p_{i}\) 的边,然后从 \(i+n\)\([a_{i},b_{i}]\) 连一条权值为 \(0\) 的边。

建出反图后 \(1 \to i\)\(n \to i\) 的路径集合会有重复统计的部分,不妨以 \(dis_{1,i}+dis_{n,i}\) 作为初始值然后再进行一遍松弛操作(若没有重复部分就不需要松弛了)。

然后就是线段树优化建图板子了。

代码

struct SMT_Q_BG
{ll id[900010],dis[2][900010],d[900010],vis[900010];vector<pair<ll,ll> >e[900010];ll lson(ll x){return x*2;}ll rson(ll x){return x*2+1;}void build(ll rt,ll l,ll r,ll n){e[rt+n*4].push_back(make_pair(rt,0));if(l==r){id[l]=rt;return;}e[lson(rt)].push_back(make_pair(rt,0));e[rson(rt)].push_back(make_pair(rt,0));e[rt+n*4].push_back(make_pair(lson(rt)+n*4,0));e[rt+n*4].push_back(make_pair(rson(rt)+n*4,0));ll mid=(l+r)/2;build(lson(rt),l,mid,n);build(rson(rt),mid+1,r,n);}void update(ll rt,ll l,ll r,ll x,ll y,ll pos,ll w,ll n){if(x<=l&&r<=y){e[rt].push_back(make_pair(pos+n*8,w));return;}ll mid=(l+r)/2;if(x<=mid){update(lson(rt),l,mid,x,y,pos,w,n);}if(y>mid){update(rson(rt),mid+1,r,x,y,pos,w,n);}}void dijkstra1(ll s,ll id){memset(vis,0,sizeof(vis));memset(dis[id],0x3f,sizeof(dis[id]));priority_queue<pair<ll,ll> >q;dis[id][s]=0;q.push(make_pair(-dis[id][s],s));while(q.empty()==0){ll x=q.top().second;q.pop();if(vis[x]==0){vis[x]=1;for(ll i=0;i<e[x].size();i++){if(dis[id][e[x][i].first]>dis[id][x]+e[x][i].second){dis[id][e[x][i].first]=dis[id][x]+e[x][i].second;q.push(make_pair(-dis[id][e[x][i].first],e[x][i].first));}}}}}void dijkstra2(ll n,ll k){memset(vis,0,sizeof(vis));priority_queue<pair<ll,ll> >q;for(ll i=1;i<=8*n+k;i++){d[i]=dis[0][i]+dis[1][i];q.push(make_pair(-d[i],i));}while(q.empty()==0){ll x=q.top().second;q.pop();if(vis[x]==0){vis[x]=1;for(ll i=0;i<e[x].size();i++){if(d[e[x][i].first]>d[x]+e[x][i].second){d[e[x][i].first]=d[x]+e[x][i].second;q.push(make_pair(-d[e[x][i].first],e[x][i].first));}}}}}
}T;
int main()
{ll n,k,c,p,a,b,i;cin>>n>>k;T.build(1,1,n,n);for(i=1;i<=k;i++){cin>>c>>p>>a>>b;T.e[i+n*8].push_back(make_pair(T.id[c]+n*4,p));T.update(1,1,n,a,b,i,0,n);}T.dijkstra1(T.id[1],0);T.dijkstra1(T.id[n],1);T.dijkstra2(n,k);for(i=1;i<=n;i++){cout<<(T.d[T.id[i]]<1e15?T.d[T.id[i]]:-1)<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828665.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识分享:Air780E软件之UDP应用示例

一、UDP概述UDP(用户数据报协议,UserDatagramProtocol)是一种无连接的、不可靠的传输层协议,主要用于实现网络中的快速通讯。以下是UDP通讯的主要特点: 1.1 无连接通讯: UDP在发送数据之前不需要建立连接,这大大减少了通讯的延迟。发送方只需将数据包封装成UDP报文,并附…

想要硬件设计不用愁?首先要搞懂这三类GPIO!

合宙低功耗4G模组经典型号Air780E,支持两种软件开发方式: 一种是传统的AT指令;一种是基于模组做Open开发。 传统AT指令的开发方式,合宙模组与行业内其它模组品牌在软件上区别不大,在硬件功耗上更有优势; 模组Open开发,合宙采用的是LuatOS方式,相对C-SDK入门更简单,开发…

定位模组LuatOS快速入门:源UART串口通信

合宙Air201资产定位模组——是一个集成超低功耗4G通信、语音通话、超低功耗定位、计步、震动、Type-C、充电、放音、录音等功能的超小PCBA。 内部集成高效、简单、可靠的LuatOS语言,旨在帮助客户降低开发难度,降低研发成本,以及打造超小超低功耗的精品产品。 合宙Air201快速…

为 .NET Conf 2024 做好准备之本地社区活动 .NET Conf China 2024 启动

.NET Conf 2024 是一个面向.NET生态系统社区的大型活动,将于2024年11月12日至14日举行。该活动将通过YouTube和Twitch进行现场直播,并在dotnetconf.net网站上提供直播流。这是一个免费的虚拟事件,旨在为初学者和学习者提供关于AI、Web开发、移动开发和游戏开发等方面的教育内…

源码开放:WebSocket应用示例

1 WebSocket概述WebSocket是HTML5下一种新的协议(本质上是一个基于TCP的协议),它实现了浏览器与服务器之间的全双工通信,能够节省服务器资源和带宽,达到实时通讯的目的。WebSocket协议通过握手机制,允许客户端和服务器之间建立一个类似TCP的连接,从而方便它们之间的通信…

东山派七号STM32MP157-适配U-Boot LCD驱动 内核启动LCD打印启动信息

最近淘到一块东山派7号开发板,基于STM32MP157DAC,因为便宜,买过来玩。 但是韦东山的资料真的有一说一,板子出的挺多,除了卖的最好的板子,其他的资料非常非常少。。(韦老师您看到了别生气,至少因为资料少引发问题我解决了也算收获经验了。。。) 我说的是实话,因为正点…

chapter16

segmentation.py参数第一题问题先让我们用一个小地址空间来转换一些地址。这里有一组简单的参数和几个不同的随机种子。你可以转换这些地址吗? segmentation.py -a 128 -p 512 -b 0 -l 20 -B 512 -L 20 -s 0 segmentation.py -a 128 -p 512 -b 0 -l 20 -B 512 -L 20 -s 1 segm…

刻不容缓腾讯云双十一活动羊毛攻略!!!

前言 每年的各大云厂商都在举办自己的活动,这不腾讯云举办了双十一嘉年华上云拼团 GO, 像我们这类程序员都拥有自己的博客或者需要部署的应用以及 Demo 案例,缺少不了云服务,接下来我带着大家领略最佳价格!!一、活动时间与节奏预热期(10 月 24 日 - 10 月 31 日)可提前了解活…

避坑指南:Mask操作时不要使用float(-inf)填充

在Transformer等类似深度学习任务中有掩码自注意力机制等子模块,会涉及默认的填充值, 建议填一个足够小的数,如-1e6就OK了,如果设置成float(-inf),如: if mask is not None:mask = mask.expand(attention_scores.shape[0], -1, -1, -1)attention_scores = attention_score…

游记:第37届校赛

T7 悦跑圈!启动! 改完这个题我就睡觉 求在s1或s2闭合的最小环,所以我枚举了边,假设一条边的两头分别是u和v,我以为环就是dij跑出来的d[u]+d[v],虽然不会立刻原路返回起点,但是中间可能有重复路径,而环是不能有这种路径的,所以从一开始就错了。(不长记性,失恋三部曲忘…

zlibrary镜像网站,z-library中文入口(持续更新)

zlibrary,一个全球领先的数字图书馆,拥有超过1300万册电子书资源,供人下载。它跨越多个学科,从古典文学到现代科技,再到人文艺术,无所不包。ZLibrary的使命是促进教育平等,让每个人都能便捷地获取知识。zlibrary数字图书馆镜像网址 zlbrary最新官网地址:https://zh.z-l…

MacOS(Unix系统)炫酷完美终端配置

MacOS(Unix系统)炫酷完美终端配置 1 下载安装 iTerm2 1.1 iTerm2,没有上架到AppStore,只能通过下载zip包安装,这是下载地址: https://iterm2.com/downloads.html ,压缩包双击打开后,将解压后的App拖动到【应用程序】文件夹就完成了。1.2 打开iTerm2 配置如下图,iTerm2…