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

Follow the Penguins

题意:

给定若干个点,它们有一个要追赶的点和当前位置,求最后所有点停止的时间,(一个点移动的速度为0.5)

思路:

使用set模拟优先队列

求出每个点移动的方向(一定不变了)

存一个pair<当前点和追赶点的距离 即time(相向而行时time=dis/2),当前点>

第一个停的点一定是相向而行的点

把所有以这个点为目标的点距离计算一下

避免精度丢失位置要乘2

int n;
const int M=5e5+5;
int t[M];
int a[M];
int dir[M];vector<int>bt[M];
int ans[M];
int npos[M];
void solve(){cin>>n;rep(i,1,n)cin>>t[i],bt[t[i]].pb(i);rep(i,1,n)cin>>a[i],a[i]*=2;rep(i,1,n){int j=t[i];if(a[i]>a[j])dir[i]=-1;else dir[i]=1;}set<pii>s;rep(i,1,n){if(dir[i]!=dir[t[i]]){s.insert({abs(a[i]-a[t[i]])>>1 ,i});}}while(s.size()){auto[time,x]=*s.begin();s.erase(s.begin());if(ans[x])continue;ans[x]=time;npos[x]=a[x]+dir[x]*time;for(auto y:bt[x]){s.erase( { abs(a[y]-a[t[y]])>>1 ,y } );s.insert( { abs(a[y]-npos[x]), y } );//为什么y不用计算time时刻的位置?因为x一定先比y停,y此时需要追赶的就是一开始的位置和npos[x]的距离差}}rep(i,1,n){cout<<ans[i]<<' ';}cout<<endl;
}
http://www.rkmt.cn/news/45681.html

相关文章:

  • 2025年提分系统系统怎么选
  • 2025年肃宁双十一眼镜品牌权威推荐榜单:眼镜/眼睛价格/眼镜店品牌精选
  • 2025年锡熔液抗氧化还原粉厂家排行榜
  • [Python刷题记录]-合并区间-普通数组/二维数组-中等
  • 2025年评价高的学习能力少儿训练品牌选哪家
  • Blender科幻机甲娘莉莉魅魔人物角色3D模型带骨骼动作绑定带贴图
  • AE插件-Furikake 1.0.0 Win 轻量级高性能粒子特效插件+使用教程
  • 邮件别名
  • 自定义redis列表增量迭代
  • Raylib贴图
  • 重新开始记录Blogs,近年工作历程分享
  • 【Tools】Visual Studio利用经验介绍(包括基本功能、远程调试、引入第三方库等等)
  • Claude Code用户故事编写最佳实践指导手册
  • 2025年权威的形象思维少儿训练机构口碑推荐榜
  • 2025年毛发检测排名怎么选择
  • 隐藏性很高的npm恶意依赖包
  • 格亿燃气灶售后维修点——真诚服务到永远!
  • 2025年11月PDA品牌推荐:主流选择避坑指南及高性价比解决方案
  • 工控机:智能制造时代的核心引擎,从稳定运行到智能演进
  • 市场上出行网约车公司
  • 海尔智能马桶售后维修站丨全国400热线号码2025已更新
  • PG系列:PG数据库中分析操作系统IO是否正常
  • 极限学习机(ELM)的原理、实现和应用
  • 2025年全封闭超声波清洗机制造企业权威推荐榜单:零排放清洗机/蒸馏回收机/双溶剂清洗机源头厂家精选
  • 胶粘剂行业PLM是什么?一文读懂胶粘剂(粘合剂)PLM系统的功能、价值、解决方案等
  • 2025年北京地漏防臭治理服务权威推荐榜单:家政服务/小便池防臭治理/浴缸防臭治理服务供应商精选
  • D - Deductive Snooker Scoring
  • 从零开始的C++学习生活 7:vector的入门使用 - 教程
  • NProgress 给 Vue 路由切换加个 “假” 进度条提升用户体验
  • 数组的定义、访问、输出