Solution - Codeforces 2031F Penchick and Even Medians

news/2024/11/15 23:48:11/文章来源:https://www.cnblogs.com/rizynvu/p/18548707

飞快秒掉了,没报名痛失首杀,痛苦。

简略题解:

考虑先随机二元下标 \((x_0, y_0)\) 满足删去 \((x_0, y_0)\) 后查询的中位数还是 \(\frac{n}{2}, \frac{n}{2} + 1\),那么这就说明 \(p_{x_0}, p_{y_0}\) 一定在中位数的两边。

那么还剩下的 \(n - 2\) 个下标两两配对成 \(\frac{n - 2}{2}\) 组。
然后每一组与 \((x_0, y_0)\) 一起问,注意到只要二元组里有中位数那么问出来的就必定带中位数(\(p_{x_0}, p_{y_0}\) 一定在中位数的两边,那么加入中位数肯定被夹在中间,不管另一个在哪都肯定还在)。

于是规模就缩小到的 \(2\) 个二元组了,每个二元组各存在一个中位数(可能只有 \(1\) 个二元组,但这个答案更简单,就是这个二元组。)
那么就只有 \(2\times 2 = 4\) 种情况,可以问出 \(3\) 种,都不是就是另一种(只是减掉了一次询问,看起来不是很必要(?))。

于是后面部分的询问次数就是 \(\frac{n - 3}{2} + 3 = \frac{n}{2} + 2\) 次,那么就留下了 \(78 - \frac{n}{2}\) 次操作。

注意到随机成功的概率就是 \(\frac{2(\frac{n}{2} - 1)^2}{n(n - 1)}\),越小其实概率越低,但是越小的次数越多,算一下看起来就很能过.jpg。

跑了下 desmos,挂掉的概率 \(\le 8\times 10^{-9}\),应该没啥问题。

#include<bits/stdc++.h>
std::mt19937_64 eng(std::chrono::steady_clock::now().time_since_epoch().count());
constexpr int maxn = 1e2 + 10;
std::pair<int, int> query(std::vector<int> a) {std::cout << "? " << a.size();for (int x : a) std::cout << ' ' << x;std::cout << std::endl;int x, y;std::cin >> x >> y;return std::make_pair(x, y);
}
inline void solve() {int n;std::cin >> n;int x0 = 0, y0 = 0;do {int x = eng() % n + 1, y;do {y = eng() % n + 1;} while (y == x);std::vector<int> vec;for (int i = 1; i <= n; i++) {if (i == x || i == y) continue;vec.push_back(i);}if (query(vec) == std::make_pair(n / 2, n / 2 + 1)) {x0 = x, y0 = y;}} while (! x0);std::pair<int, int> c[2] = {{0, 0}, {0, 0}};for (int i = 1, j = 0, k = 0; i <= n; i++) {if (i == x0 || i == y0) continue;if (j) {auto [x, y] = query({i, j, x0, y0});if (x == n / 2 || x == n / 2 + 1 || y == n / 2 || y == n / 2 + 1) {c[k++] = {i, j};}j = 0;} else {j = i;}}if (! c[1].first) {std::cout << "! " << c[0].first << ' ' << c[0].second << std::endl;} else if (query({c[0].first, c[1].first, x0, y0}) == std::make_pair(n / 2, n / 2 + 1)) {std::cout << "! " << c[0].first << ' ' << c[1].first << std::endl;} else if (query({c[0].first, c[1].second, x0, y0}) == std::make_pair(n / 2, n / 2 + 1)) {std::cout << "! " << c[0].first << ' ' << c[1].second << std::endl;} else if (query({c[0].second, c[1].first, x0, y0}) == std::make_pair(n / 2, n / 2 + 1)) {std::cout << "! " << c[0].second << ' ' << c[1].first << std::endl;} else {std::cout << "! " << c[0].second << ' ' << c[1].second << std::endl;}
}
int main() {int T;for (std::cin >> T; T--; ) {solve();}return 0;
}

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

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

相关文章

团队作业4——项目冲刺5

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/作业要求 需求&原型改进、系统设计、Alpha任务分配计划、测试计划团队项目仓库 https://github.com/bitpurleclude/GDUT-Goofish/issues团队成员 李嘉锐 车峤锐 于海洋 林进光 黄健 钟启腾 钟月灿1…

基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现二

运行环境:jdk1.8、mysql5.x、idea、maven3.5/3.5 如果环境一致 运行不起来可以右侧联系我,包运行。 功能:管理员信息数据层Mapper、宠物信息数据层Mapper、宠物领养记录信息数据层Mapper、宠物评论信息数据层Mapper、宠物评论回复信息数据层Mapper、用户信息数据层Mapper 技…

Alpha冲刺(3/14)——2024.11.14

目录一、团队成员分工与进度二、成员任务问题及处理方式三、冲刺会议内容记录会议内容四、GitHub签入记录及项目运行截图GitHub签入记录五、项目开发进展及燃尽图项目开发进展燃尽图六、团队成员贡献表 一、团队成员分工与进度成员 完成的任务 完成的任务时长 剩余时间施靖杰 编…

「AI Infra 软件开源不是一个选项,而是必然」丨云边端架构和 AI Infra专场回顾@RTE2024

在人工智能和开源技术蓬勃发展的当下,AI Infra 项目正经历着日新月异的变革。从跨平台运行时到云边端 AI 基础设施,再到多模态知识助手,创新浪潮席卷而来。这些进步不仅显著提升了技术指标,也为实时音视频处理、边缘计算、大模型应用等场景开辟了新的可能性。在 RTE 2024 大…

2024-2025-1 20241305 《计算机基础与程序设计》第八周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第八周作业这个作业的目标 1、功能设计与面向对象设计 2、面向对象设计过程 3、面向对象语言三要素 4、汇编、编译、解释、执行作业正文 本博客链接教材学习…

基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现一

功能点:管理员信息实体类Entity、宠物信息实体类Entity、宠物领养记录信息实体类Entity、宠物评论信息实体类Entity、宠物评论回复信息实体类Entity、用户信息实体类Entity 技术点:SSM+JSP+Mysql+Bootstrap+JS+CSS 免费学习:猿来入此一、前言介绍: 免费学习:猿来入此 1.1 …

2024-2025-1 20241320 《计算机基础与程序设计》第8周学习总结

2024-2025-1 20241320 《计算机基础与程序设计》第8周学习总结 作业信息 |这个作业属于哪个课程| https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP |这个作业要求在哪里| https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08 |这个作业的目标| 功能设计与面向对象设…

项目冲刺11.15

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 作业要求这个作业的目标 进行为期七天的项目冲刺并记录前言 本篇博客是项目冲刺的第七篇,七篇博客的汇总如下:博客汇总第一篇博客第二篇博客第三篇博客第四篇博客第五篇博客第六篇博客第七篇博客团队简介队名 拖延是你不…

Latex 安装

使用的开发环境是 VSCode. Latex 在编译时需要用到宏包. 宏包到底是啥? 有啥作用? 从何处下载? Latex 软件的安装:texlive: 一次性下载所有的宏包. 磁盘需求较大, 约 7 ~ 8 G.miktex: 仅下载必要的宏包, 编译时补充下载宏包. 磁盘需求较小, 约几百 M.清华大学开源软件镜像站…

20222424 2024-2025-1 《网络与系统攻防技术》实验五实验报告

20222424 2024-2025-1 《网络与系统攻防技术》实验五实验报告 1.实验内容 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:…

Windows程序设计指南

Windows程序设计指南“到Petzold的书中找找”——仍然是解决Windows程式开发各种疑难杂症时的灵丹妙药。在第五版的《Windows程式开发设计指南》中,作者身为倍受敬重的WindowsPioneerAward(Windows开路先锋奖)得主,依据最新版本Windows作业系统,以可靠的取材资料校定这一本…

Windows高级调试

Windows高级调试中文版文档摘要: 本书《Windows高级调试》主要讲解Windows高级调试技术和工具,包括调试器简介、调试器揭密、符号文件与源文件的管理、栈内存破坏、堆内存破坏、安全、进程间通信、资源泄漏、同步、编写定制的调试扩展、64位调试、事后调试、Windows Vista基础…