当前位置: 首页 > news >正文

CF1039A Timetable - crazy-

构造

题意

\(n\) 辆公交车从车站 A 到车站 B,最短行驶时间为 \(t\)。已知:

  • A 站出发时刻表 \(a_1 < a_2 < \dots < a_n\)
  • 每辆公交车到达 B 站后,B 站会有一个到达时刻表 \(b_1 < b_2 < \dots < b_n\)
  • 一辆公交车的行驶时间不能短于 \(t\)
  • 每辆公交车 \(i\) 在合法到达排列中的最晚排名为 \(x_i\)(即它最多能排在第 \(x_i\) 位到达)

给定 \(a_i\)\(x_i\),要求构造一组 \(b_i\) 满足所有条件,或判断无解。

\(1 \leq n \leq 2 \times 10^5\)
\(1 \leq t \leq 10^{18}\)\(1 \leq a_1 < a_2 < \dots < a_n \leq 10^{18}\)\(1 \leq x_i \leq n\)

题解

先简单粗暴的构造一组 \(b_i=a_i+t\),再考虑修改。

设当前正在处理第 \(i\) 位,前面 \(x_i\) 的最大值为 \(mx\)。若 \(mx>i\) ,意味着有车需要来到他的后面,也就意味着 \(a_{i+1}+t\ge b_i\)

这是因为如果一辆车 \(i\) 要移动到 \(x_i\),最简单的方法是将 \(j \in (i,x_i]\) 向左平移一个顺位。

因此令 \(b_i\leftarrow b_{i+1}\),同时 \(b_{i+1}\leftarrow b_{i+1}+1\)

最后再用类似于双指针的算法判断一下每一个 \(i\) 是否最远只能到达 \(x_i\),因为为了迁就前面的 \(x_i\),当前的 \(i\) 也可能飞的更远。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int Maxn=2e5+10;
int n,t,mx;
int a[Maxn],b[Maxn],x[Maxn],f[Maxn];
signed main()
{cin>>n>>t;for(int i=1;i<=n;i++) cin>>a[i],b[i]=a[i]+t;for(int i=1;i<=n;i++) cin>>x[i];for(int i=1;i<=n;i++){mx=max(mx,x[i]);if(mx>i) b[i]=b[i+1],b[i+1]++;}int l,r;for(l=r=1;l<=n;l++){if(r<=l) r=l;while(r+1<=n && a[r+1]+t<=b[r] && a[l]+t<=b[r+1]) r++;if(r!=x[l]) return (cout<<"No"<<endl,0);}cout<<"Yes"<<endl;for(int i=1;i<=n;i++) cout<<b[i]<<" ";cout<<endl;return 0;
}
http://www.jsqmd.com/news/88978/

相关文章:

  • 基于泰坦尼克号数据集的随机森林算法实战
  • 图片转文字技术(一)从光学识别到智能理解的演进之路
  • 亿赛通脚本远程调试配置技巧
  • 【大模型预训练】17-分布式并行策略:Tensor并行、Pipeline并行的应用场景
  • Dockerfile 详解
  • 蛇形矩阵(三角形版本)
  • 探索非线性电液伺服系统:从PID到反步控制的奇妙之旅
  • 【大模型预训练】18-分布式并行技术:梯度同步、参数服务器架构实现方法
  • 探索Comsol双温模型在半导体飞秒激光研究中的应用
  • 线性回归和回归决策树(CART)对比
  • 【硕士生必看】硕士论文被退稿?可能是AI惹的祸!Paperzz智能降重+降AIGC,守护你的学术尊严!
  • 三相并联型有源电力滤波器APF仿真探索
  • 六自由度机械臂抓取动作仿真:两套易懂代码解析
  • Day32 类的定义和方法
  • 货运 app 运输管理系统框架搭建
  • 匠魂的熔炼注册
  • Simulink导弹制导系统仿真:从模型到实战模拟
  • Socket编程与编码转换实战指南
  • 【博士生必看】博士论文被退稿?可能是AI惹的祸!Paperzz智能降重+降AIGC,守护你的学术尊严!
  • 粒子群算法在风光储微电网优化调度中的应用:经济目标下的电源侧与负荷侧运行策略优化
  • PRML为何是机器学习的经典书籍中的经典?
  • 晶体塑性有限元多晶Voronoi模型生成:Neper软件在Linux系统下的神奇之旅
  • 【paperzz免费文献】5分钟搞定百篇文献?Paperzz一键生成文献综述,导师都说“这孩子真会用工具”!
  • 核技巧
  • Redis缓存三大问题详解:击穿、穿透与雪崩的解决方案
  • “蟒蛇书”作者力荐,全球热销的Python入门经典书第3版出版
  • 完整教程:打造可编程可集成的实时计算平台:阿里云实时计算 Flink被集成能力深度解析
  • 【开题答辩全过程】以 基于PHP的高校心理测评系统的设计与实现为例,包含答辩的问题和答案
  • 在C# 中搭建基于VisionPro的多相机多线程采集与Socket通讯的视觉系统
  • Docker 搭建Nexus3私服