Codeforces Round974 (Div3)--(E,H)题解

Problem - E - Codeforces

思路:最短路变种,每个点都有两种状态。分别是从不骑马到达的状态,和骑马到达的状态。要注意的是,如果当前点是有马的,而前一个点是不骑马过来的,那么更新也直接更新为当前骑马的状态,可以直接舍去当前点不骑马的状态。因为当前点不骑马的状态已经没有意义了,既然当前点可以骑马,那么后面肯定全部骑马。如果一个点可以由骑马的到达,也可以由不骑马的到达,那么两个状态都要保留,不一定骑马的就是更优的。因此vis要有两种状态,pq要存三个值,这样的话每个点最多遍历两次,不会超时。记录每个点由不骑马的到达和骑马的到达需要的最短时间后。枚举相遇点,取两种状态的最小值,再取最大值就是当前点最小的相遇时间。

int n,m,h;
vector<pair<int,int>> vct[200005];
bool mark[200005];
priority_queue<pair<int,pair<int,int>>> pq;
int dis1[200005][2],dis2[200005][2];   0为没有骑马,1为骑马
map<pair<int,int>,int> vis;  <from,状态>
void dijkstra(int s,int typ){vis.clear();if(typ==1) for(int i=1;i<=n;i++) dis1[i][0]=dis1[i][1]=LONG_LONG_MAX/2;if(typ==2) for(int i=1;i<=n;i++) dis2[i][0]=dis2[i][1]=LONG_LONG_MAX/2;typ==1?dis1[s][0]=0:dis2[s][0]=0;if(mark[s]&&typ==1) dis1[s][1]=0;if(mark[s]&&typ==2) dis2[s][1]=0;pq.push({0,{s,mark[s]}});   <权重,<from,状态>>while(pq.size()){int from=pq.top().second.first,sta=pq.top().second.second;pq.pop();if(vis[{from,sta}]) continue;vis[{from,sta}]=1;for(auto v:vct[from]){int to=v.first,w=v.second;if(typ==1){if(sta){if(dis1[to][1]>dis1[from][1]+w/2){dis1[to][1]=dis1[from][1]+w/2;pq.push({-dis1[to][1],{to,1}});}}else if(mark[to]){if(dis1[to][1]>dis1[from][0]+w){dis1[to][1]=dis1[from][0]+w;pq.push({-dis1[to][1],{to,1}});}}else{if(dis1[to][0]>dis1[from][0]+w){dis1[to][0]=dis1[from][0]+w;pq.push({-dis1[to][0],{to,0}});}}}if(typ==2){if(sta){if(dis2[to][1]>dis2[from][1]+w/2){dis2[to][1]=dis2[from][1]+w/2;pq.push({-dis2[to][1],{to,1}});}}else if(mark[to]){if(dis2[to][1]>dis2[from][0]+w){dis2[to][1]=dis2[from][0]+w;pq.push({-dis2[to][1],{to,1}});}}else{if(dis2[to][0]>dis2[from][0]+w){dis2[to][0]=dis2[from][0]+w;pq.push({-dis2[to][0],{to,0}});}}}}}
}
void solve(){           Ecin>>n>>m>>h;for(int i=1;i<=n;i++) vct[i].clear(),mark[i]=false;for(int i=1;i<=h;i++){int x; cin>>x;mark[x]=true;}for(int i=1;i<=m;i++){int u,v,w; cin>>u>>v>>w;vct[u].emplace_back(v,w);vct[v].emplace_back(u,w);}dijkstra(1,1);dijkstra(n,2);if(dis1[n][0]==LONG_LONG_MAX/2&&dis1[n][1]==LONG_LONG_MAX/2){cout<<"-1"<<endl;return;}else{int ans=LONG_LONG_MAX;for(int i=1;i<=n;i++) ans=min(ans,max(min(dis1[i][0],dis1[i][1]),min(dis2[i][0],dis2[i][1])));cout<<ans<<endl;}
}

Problem - H - Codeforces

思路:莫队的模板题,直接从洛谷上面复制之前写的代码,改一下就行了.

int n,m,B;
int arr[250004],p[250004];
typedef struct Q{int l,r,idx;
}Q;
Q q[250004];
//bool cmp(Q a,Q b){     普通分块排序
//    if(a.l/B!=b.l/B) return a.l<b.l;
//    return a.r<b.r;
//}
bool cmp(Q a,Q b){   玄学奇偶性排序if (p[a.l] ^ p[b.l]) return a.l/B < b.l/B ;else{if (p[a.l] & 1) return a.r < b.r;else return a.r > b.r;}
}
int l=0,r=0,cnt[1000006],ans[250004];
P2709 小B的询问
https://www.luogu.com.cn/problem/P2709
void solve(){                       H    莫队轻松过cin>>n>>m;B=sqrt(n);for(int i=1;i<=n;i++) cin>>arr[i],cnt[arr[i]]=0;for(int i=1;i<=m;i++) cin>>q[i].l>>q[i].r,q[i].idx=i,p[q[i].l]=q[i].l/B,p[q[i].r]=q[i].r/B;sort(q+1,q+m+1,cmp);l=q[1].l+1,r=q[1].l;int cnt1=0;for(int i=1;i<=m;i++){while(l>q[i].l) {--l;cnt[arr[l]]^=1;if(cnt[arr[l]]==1) cnt1++;else cnt1--;}while(r<q[i].r) {++r;cnt[arr[r]]^=1;if(cnt[arr[r]]==1) cnt1++;else cnt1--;}while(l<q[i].l) {cnt[arr[l]]^=1;if(cnt[arr[l]]==1) cnt1++;else cnt1--;l++;}while(r>q[i].r) {cnt[arr[r]]^=1;if(cnt[arr[r]]==1) cnt1++;else cnt1--;r--;}ans[q[i].idx]=(cnt1==0);}for(int i=1;i<=m;i++){if(ans[i]==1) cout<<"YES\n";else cout<<"NO\n";}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

心理教育辅导系统:Spring Boot技术实现

4 系统设计 4.1系统概要设计 高校心理教育辅导系统主要分为管理员、教师和学生三个角色&#xff0c;系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet&#xff0c;便可以在任…

论文阅读:Omni-Kernel Network for Image Restoration

论文地址&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/27907 项目地址&#xff1a;https://github.com/c-yn/OKNet 发表时间&#xff1a;2024 图像恢复的目的是从一个退化的低质量的观测中重建一个高质量的图像。最近&#xff0c;Transformer模型由于其强大…

本地快速部署一个简洁美观的个人Halo博客网站并发布公网远程访问

文章目录 前言1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤&#xff1a;1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 前言 本文主要介绍如何在Cen…

[系列]参数估计与贝叶斯推断

系列 点估计极大似然估计贝叶斯估计&#xff08;统计学&#xff09;——最小均方估计和最大后验概率估计贝叶斯估计&#xff08;模式识别&#xff09;线性最小均方估计最小二乘估计极大似然估计&贝叶斯估计极大似然估计&最大后验概率估计线性最小均方估计&最小二乘…

【鸿蒙开发 day13】

ArkTs-核心-基础 一.处理数据1.字符串的拼接2.模板字符串 二.类型转换(1)字符串转数字(2)数字转字符串(3)布尔值转换情况 三.交互点击事件四.状态管理五.隐藏图片案例六.运算符1.算数运算符2.赋值运算符3.一元运算符4.比较运算符5.逻辑运算符6.运算符优先级 七.美团点餐案例八.…

游戏开发团队并非蚂蚁协作(3):开发过程中的“尾气”

“尾气”指的什么&#xff1f; 就像汽车虽然行驶到达目的&#xff0c;但是却会在路途中留下尾气污染环境。开发过程中有时虽然完成了需求&#xff0c;但是也留下了“尾气”&#xff0c;或者说“技术债”、“遗留问题”。 “尾气”并不是看不到或者难以被解决&#xff0c;而是…

【Linux】常用指令详解一(ls,-a,-l,-d,cd,pwd,mkdir,touch,rm,clear)

1.前言 读了一些Linux常用指令的博文&#xff0c;很可惜没读到一点点手把手教怎么操作的博文&#xff0c;所以写一篇手把手教适合初学者的Linux常用指令博文 Linux的命令是树状结构 输入这一句命令&#xff1a;yum install -y tree 即可以查看Linux树状目录结构 查看示例&am…

2024年中国研究生数学建模竞赛C题“数据驱动下磁性元件的磁芯损耗建模”全析全解

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 总领这个题&#xff0c;是属于数据挖掘和数据优化类型的题目&#xff…

Linux系统与服务构建运维

使用ext4文件系统格式化逻辑卷mylv。命令如下&#xff1a; 一、Linux操作系统安装 1.学习目标 &#xff08;1&#xff09;了解服务器操作系统安装。 &#xff08;2&#xff09;了解CentOS系统的安装。 2.节点规划 IP 主机名 节点 192.168.200.10 localhost Linux服务器…

HOSTS文件劫持--导致笔记本网络卡顿

写在前面&#xff1a; 因为笔记本网速卡顿&#xff0c;去维修店维修网卡&#xff0c;网卡咱们测试都没有问题&#xff0c;一直吐槽售后服务一般。自己也装过几次系统了 点击任务栏中的搜索图标&#xff0c;输入"cmd"&#xff0c;点击"命令提示符"选择&qu…

Vivado的.v文件被误分类到Non-module Files中[filemgmt 20-2001] Source scanning failed

报错 所有新创建的Design Sources被分类到Non-module Files中 两条报错 1、[filemgmt 20-2001] Source scanning failed (launch error) while processing fileset “sources_1” due to unrecoverable syntax error or design hierarchy issues. Recovering last known analys…

STM32(十七):I2C通信外设

I2C外设 STM32内部集成了硬件I2C收发电路&#xff08;USART是串口通信的硬件收发电路&#xff09;&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担。 支持多主机模型&#xff08;可变多主机&#xff…

python基础(二) 包和import

包的创建 文件创建命令 在 Django 中&#xff0c;python manage.py startapp first_app 这一行命令的作用是创建一个新的应用&#xff08;app&#xff09;&#xff0c;名为 first_app。在 Django 项目中&#xff0c;"app" 是实现某些功能模块的单独部分&#xff0c…

詹妮弗洛佩兹25年发9张专辑3张是关于阿弗莱克的,爱恨情仇之深可见一斑!新专辑已定时间表!

詹妮弗洛佩兹25年共发9张专辑&#xff0c;有3张是关于本阿弗莱克的 内部人爆詹妮弗洛佩兹已定制作与本阿弗莱克的“心碎”专辑时间表 虽然詹妮弗洛佩兹最近的专辑《This Is Me…Now》以失败告终&#xff0c;但她可能已经准备好重返音乐工作室。但这一次&#xff0c;她将推出一…

校园美食地图:Spring Boot实现的探索与分享平台

第1章 绪 论 1.1课题背景 2021年处于信息高速发展的大背景之下。在今天&#xff0c;缺少手机和电脑几乎已经成为不可能的事情&#xff0c;人们生活中已经难以离开手机和电脑。针对增加的成本管理和操作,商家非常有必要建立自己的网上校园周边美食探索及分享平台&#xff0c;这既…

【Java】Java开发全攻略:从环境搭建到高效编程

文章目录 前言&#xff1a;1. JDK组成2. 配置JDK的环境变量3. 选择开发工具3.1 使用文本编辑器 命令行3.2 Java的跨平台原理3.3 IntelliJ IDEA 开发工具3.3.1 IDEA 创建 Java项目的代码结构3.3.2 使用IDEA开发第一个Java程序的步骤3.3.2 IDEA安装AI编程插件3.3.3 IDEA常用快捷…

【CSS in Depth 2 精译_033】5.4 Grid 网格布局的显式网格与隐式网格(中)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

pytorch的动态计算图机制

pytorch的动态计算图机制 一&#xff0c;动态计算图简介 Pytorch的计算图由节点和边组成&#xff0c;节点表示张量或者Function&#xff0c;边表示张量和Function之间的依赖关系。 Pytorch中的计算图是动态图。这里的动态主要有两重含义。 第一层含义是&#xff1a;计算图的…

Swin Transformer—使用平移窗口的分层视觉转换器结构

Swin Transformer解读 论文题目&#xff1a;Swin Transformer: Hierarchical Vision Transformer using Shifted Windows. 官方代码地址&#xff1a;https://github.com/microsoft/Swin-Transformer. 引言与概括 ICCV2021的最佳论文作者是来自微软亚洲研究院。 SwinTransforme…

基础实践:使用JQuery Ajax调用Servlet

前言 本博客介绍最简单的JQuery&#xff08;原生JS的封装库&#xff09;使用Ajax发送请求&#xff0c;并通过对应的servlet响应数据&#xff0c;并在页面显示&#xff0c;并且servlet响应的数据来自MySQL数据库。 实现需求&#xff1a;在前端页面的输入框中输入要注册的用户名&…