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

CF1526F - Median Queries

题目链接

首先不妨设 \(p _ a < p _ b < p _ c\) 则可以询问出 \(\max \{p _ b - p _ a, p _ c - p _ b\}\)

首先可以花费至多 \(422\) 次操作确定一个三元组 \((x, y, z)\) 使得 \(p _ x, p _ y, p _ z\) 相差都不会太大,具体地最大减最小 \(\le (n - 4) / 3\)

然后可以拿 \((x, y)\) 去对其他 \(n - 2\) 个数都问一遍,找出其中询问的最大值所在的位置 \(u\),则 \(p _ u\) 一定是 \(1\) 或者 \(n\)

然后我们希望找到 \(1, 2\)\(n - 1, n\) 所在位置。发现在上面询问 \(n - 2\) 个数的过程中,把询问等于最大值 \(- 1\) 的所有位置找出来(不超过 2 个),然后拿 \((x, u)\) 去问这些位置,返回值最小的位置就是 \(p _ u\) 对应的另一个数。

由于我们不知道是 \(1, 2\) 还是 \(n - 1, n\),先假设 \(p _ u = 1, p _ v = 2\),再对其他 \(n - 2\) 个数都问一遍得出 \(p\) 数组。

因为题目保证 \(p _ 1 < p _ 2\),所以出现 \(p _ 1 > p _ 2\) 的情况把值域反转一下就行了。

#include<cstdio>
#include<vector>
#include<array>
#include<random>
#define N 100005
#define ran(l,r) uniform_int_distribution<>(l,r)(rnd)
using namespace std;int T,n,p[N],d[N];
int ask(int x,int y,int z) {printf("? %d %d %d\n",x,y,z),fflush(stdout);int r=0; scanf("%d",&r);return r;
}
void fine() {printf("! ");for(int i=1;i<=n;i++) printf("%d ",p[i]);puts(""),fflush(stdout);
}
mt19937 rnd(random_device{}());
int main() {scanf("%d",&T);while(T--) {scanf("%d",&n);int x=0,y=0;while(1) {int p=ran(2,n-1),q=ran(1,p-1),r=ran(p+1,n);if(ask(p,q,r)<=(n-4)/6) {x=p,y=q; break;}}int mx=0,u=0;for(int i=1;i<=n;i++) if(i!=x&&i!=y) {d[i]=ask(x,y,i);if(d[i]>mx) mx=d[i],u=i;}vector<int> Ds;for(int i=1;i<=n;i++) if(i!=x&&i!=y&&d[i]==mx-1) Ds.push_back(i);int v=0,mn=n;for(auto D:Ds) {int w=ask(x,u,D);if(w<mn) mn=w,v=D;}p[u]=1,p[v]=2;for(int i=1;i<=n;i++) if(i!=u&&i!=v) p[i]=2+ask(u,v,i);if(p[1]>p[2]) {for(int i=1;i<=n;i++) p[i]=n+1-p[i];}fine(),scanf("%*d");}return 0;
}
http://www.jsqmd.com/news/201082/

相关文章:

  • 四元数散度和旋度-8
  • 大数据挖掘中的自动化数据增强
  • 2026年靠谱的橡塑制品厂家选型参考指南 - 品牌鉴赏师
  • 四元数散度和旋度-9
  • 激励型需求响应对配电网运行可靠性的影响Matlab代码
  • 2026年热门的精密注塑制品厂家选购参考榜 - 品牌鉴赏师
  • 四元数散度和旋度-7
  • 大数据领域数据合规:提升竞争力的关键
  • 电价负荷需求响应-考虑电价变动Matlab代码
  • 【剑斩OFFER】算法的暴力美学——字母异位词分组
  • 组件通信
  • 【无人机三维路径规划】基于混沌增强领导者黏菌算法CELSMA多无人机协同集群避障路径规划 目标函数:最低成本:路径、高度、威胁、转角附Matlab代码
  • 独立开发者:Build In Public,解决产品冷启动难题
  • 小米 Pad 5 (nabu) 引导 Linux 的FFU问题(未解决):固件、ABL 与 FFU 模式
  • 【癫痫检测】癫痫中针对功能障碍特异性干预措施的癫痫终止建模Matlab实现
  • 2026新年选购指南:全球3D扫描仪十大品牌权威排名与深度解析 - 匠子网络
  • 【大模型】lora微调相关
  • 敲黑板!一分钟学会解析车辆VIN码
  • 解析 ‘Privacy-preserving RAG’:在将数据存入状态前,自动识别并掩蔽个人敏感信息(PII)
  • 2026必备8个降AI率工具测评榜单
  • flask: 用uwsgi启动服务
  • 什么是 ‘Shadow Execution’:新版逻辑节点在后台静默运行并与原版对比,验证其安全性后再上线
  • 企业管理的制度建设者:提示工程架构师
  • flask: uwsgi报错:ModuleNotFoundError: No module named encodings
  • 新源恒远充电站管理的好帮手!
  • 模型训练过程报出nan的错误
  • Looki 获蚂蚁、美团 2000 万美元融资;Plaud 升级录音胶囊 NotePin S,从硬件扩展至会议转录软件丨日报
  • 2026最新户外功能性面料/防晒衣面料/运动面料/时尚商务男装面料/瑜伽面料优质品牌首选和兴泰——服务覆盖广东广州义乌福建等地,源头厂家直供,实力铸就品质 - 全局中转站
  • 【TVM教程】TVM 运行时系统
  • html+css实现血轮眼轮回眼特效代码