CF2133C 下界(The Nether)

洛谷题目传送门

题目描述

这是一道交互题。

最近发现下界(The Nether)后,Steve 在他的世界中建造了一个由 nnn 个下界传送门组成的网络,每个传送门位于不同的位置。

每个传送门都单向连接到若干(可能为零)其他传送门。为避免迷路,Steve 精心构建了这个传送门网络,确保不存在通过传送门跳跃能从某个位置回到自身的情况;严格来说,该网络构成一个有向无环图(DAG)。

Steve 拒绝告诉你哪些传送门相互连接,但允许你进行查询。每次查询时,你给 Steve 一个位置集合 S={s1,s2,…,sk}S = \{s_1, s_2, \ldots, s_k\}S={s1,s2,,sk} 和一个起始位置 x∈Sx \in SxS。Steve 会找出从 xxx 出发、仅经过 SSS 中位置的最长路径,并告诉你该路径经过的位置数量(若无法从 xxx 到达 SSS 中任何其他位置,Steve 会回复 111)。

由于你希望获得“热门景点成就,你需要找到一条访问尽可能多位置的路径。Steve 特别慷慨,允许你使用最多 2⋅n2 \cdot n2n 次查询来找出答案。

输入格式

每个测试包含多个测试用例。第一行包含测试用例数量 ttt1≤t≤10001 \le t \le 10001t1000)。接下来描述每个测试用例。

每个测试用例仅有一行,包含一个整数 nnn2≤n≤5002 \le n \le 5002n500)——表示位置数量。

保证所有测试用例的 n3n^3n3 之和不超过 5003500^35003

输出格式

输入输出样例 #1

输入 #1

2
53321211

输出 #1

? 1 4 1 2 3 4? 3 3 4 3 2? 5 2 1 5? 2 2 2 4! 4 5 1 4 2? 1 2 1 2? 2 2 1 2! 1 1

说明/提示

第一个测试用例中,传送门网络结构如下:

  • 从位置 111 出发、仅经过集合 {1,2,3,4}\{1, 2, 3, 4\}{1,2,3,4} 的最长路径是 1→4→21 \rightarrow 4 \rightarrow 2142,该路径包含 333 个不同位置。
  • 从位置 333 出发、仅经过集合 {2,3,4}\{2, 3, 4\}{2,3,4} 的最长路径是 3→4→23 \rightarrow 4 \rightarrow 2342,该路径包含 333 个不同位置。
  • 从位置 555 出发、仅经过集合 {1,5}\{1, 5\}{1,5} 的最长路径是 5→15 \rightarrow 151,该路径包含 222 个不同位置。
  • 从位置 222 出发无法到达集合 {2,4}\{2, 4\}{2,4} 中的任何其他位置,因此 Steve 对该查询回复 111

利用这些查询信息,可确定最长路径为 5→1→4→25 \rightarrow 1 \rightarrow 4 \rightarrow 25142

第二个测试用例中,传送门网络结构如下:

两个传送门之间没有相互连接,因此最长路径仅包含单个位置。注意:输出 ! 1 2 同样是一个有效答案。

思路详解

题目分析

我们有2N2N2N词的询问机会,思考如何求出最长路及最长路上的节点???如果只是求最长路,我们只需要以每个节点为起点,让SSS包含所有节点,询问NNN次即可。可是如何求出最长路上的节点呢?求最长路长度的询问次数肯定变不了,我们一定要在NNN询问以内求出最长路上的节点。

我们返现我们通过询问最长路长度可以知道最长路的起点,考虑如何求出其他节点?我们发现对于两个点u,vu,vu,v如果有一条边u−>vu->vu>v,则询问 ? u 2 u v 的答案必定为2。那我们难道要从起始节点将这个图还原出来?显然我们没有N2N^{2}N2的询问次数。

我们发现若从最长路起点uuu开始的最长路长度为lenlenlen,则uuu在最长路上的下一个节点vvv,从vvv开始的最长路的长度必定为len−1len-1len1

那我们每次只需要去询问最长路长度为len−1len-1len1的节点vvv是否与节点uuu相连,相连则在找与vvv相连的…最后找到的节点len=1len=1len=1

过程分析

我们的具体过程如下:

  1. 首先进行NNN次询问求解最长路及其起点。
  2. 在依次寻找最长路上的其他节点。
  3. 最后输出答案即可。

code

#include<bits/stdc++.h>
using namespace std;
int T;
const int N=505;
struct node{int x,id;friend bool operator<(node t1,node t2){return t1.x>t2.x;}
}js[N];
int ans[N];
int main(){
//根据题目,我们可以提问2n次,我们需要求出最长路及最长路上的节点
//考虑先询问n次求出最长路,并记录从每个点开始的最长路
//我们找到了最长路的长度和最长路的起始点,考虑如何求出其他点
//我们发现,若有一条边u->v,则询问? u 2 u v必定为2
//所以我们可以一次遍历当前最长路长度i,寻找节点的最长路为i-1且这两点相连,这个节点即为当前节点在最长路中的上一个节点cin>>T;while(T--){int n;cin>>n;for(int i=1;i<=n;i++){cout<<'?'<<' '<<i<<' '<<n<<' ';for(int j=1;j<=n;j++)cout<<j<<' ';cout<<'\n';cout.flush();//询问每个节点的最长路径int x;cin>>x;js[i].x=x;js[i].id=i;//记录}sort(js+1,js+1+n);int beg=js[1].id,o=1;//取最长路径ans[o]=js[1].id;for(int i=js[1].x-1;i>=1;i--){//遍历最长路的长度for(int j=1;j<=n;j++){if(js[j].x==i){cout<<'?'<<' '<<beg<<' '<<2<<' '<<beg<<' '<<js[j].id<<'\n';cout.flush();//询问判断两个节点是否相连int x;cin>>x;if(x==2){beg=js[j].id;break;}}}ans[js[1].x-i+1]=beg;//记录当前节点}cout<<'!'<<' '<<js[1].x<<' ';//输出答案for(int i=1;i<=js[1].x;i++)cout<<ans[i]<<' ';cout<<'\n';cout.flush();}return 0;
}

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

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

相关文章

无线USB转换器TOS-WLink网盘更新--TOS-WLink使用帮助V1.0.pdf

1&#xff0c;编写原因 随着当前视频越来越多&#xff0c;对于首次接触到WLink的朋友、首次开箱使用的朋友不够友好&#xff0c;常常感觉无从下手&#xff0c;为此编写了TOS-WLink使用帮助V1.0.pdf&#xff1b;按照文档进行一步一步驱动安装&#xff0c;配网&#xff1b;文档中…

Redis面试精讲 Day 29:Redis安全防护与最佳实践

【Redis面试精讲 Day 29】Redis安全防护与最佳实践 在“Redis面试精讲”系列的第29天&#xff0c;我们聚焦于一个在生产环境中至关重要、却常被开发者忽视的核心主题——Redis的安全防护与最佳实践。随着Redis广泛应用于高并发、分布式系统中&#xff0c;其暴露在公网或内网中…

【数据结构】LeetCode160.相交链表 138.随即链表复制 牛客——链表回文问题

文章目录一、相交链表问题问题描述解题思路分析思路一&#xff1a;暴力遍历法思路二&#xff1a;双指针对齐法&#xff08;最优解&#xff09;二、链表的回文结构问题描述解题思路完整代码三、 随即链表的复制问题描述解题思路复杂度分析一、相交链表问题 问题描述 给定两个单…

Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【四、事务引擎核心 - MVCC与锁机制】

Mysql InnoDB 底层架构设计、功能、原理、源码系列合集 一、InnoDB 架构先导。【模块划分&#xff0c;各模块功能、源码位置、关键结构体/函数】 二、内存结构核心 - 缓冲池与性能加速器 三、日志系统 - 事务持久化的基石 四、事务引擎核心 - MVCC与锁机制 五、InnoDB 高阶…

[ pytorch ] 基于CLIP的zero-shot图像分类

论文&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 地址&#xff1a;Learning Transferable Visual Models From Natural Language Supervision 一、关于CLIP 基于图文匹配的特征学习&#xff1a;该论文证明了预测哪个标题与哪个图像…

SP95N65CTO:一款高性能650V SiC MOSFET的全面解析

碳化硅&#xff08;SiC&#xff09;功率器件因其优异的性能&#xff0c;在高频、高温、高效率的应用中越来越受到重视。本文将以SP95N65CTO为例&#xff0c;详细介绍这款650V SiC MOSFET的关键特性、电气参数与应用场景。一、产品概述SP95N65CTO是一款采用TOLI&#xff08;TO-2…

week4-[二维数组]平面上的点

week4-[二维数组]平面上的点 题目描述 有 NNN 个二维平面上的点&#xff0c;每个点的坐标都是整数且坐标范围都在 0∼9990\sim 9990∼999 之间&#xff0c;求其中出现最频繁的点的出现次数及其坐标。 输入格式 第一行有一个整数 NNN&#xff0c;表示平面上点的个数。 接下来 NN…

领域专用AI模型训练指南:医疗、法律、金融三大垂直领域微调效果对比

领域专用AI模型训练指南&#xff1a;医疗、法律、金融三大垂直领域微调效果对比 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般绚烂的技术栈中&#xff0c;我是那个永不停歇的色彩收集者。 &#x1f98b; 每一个优化都是我培育的花朵&#xff0…

在自动驾驶中ESKF实现GINS时,是否将重力g作为变量考虑进去的目的是什么?

在自动驾驶的ESKF中&#xff0c;是否将重力 g 作为估计变量&#xff0c;可以从多个维度来比较这两种方法的差异。对比维度不将重力 g 作为变量将重力 g 作为变量核心假设重力矢量 g 是已知且恒定的完美参考量。重力矢量 g 是需要被估计或校准的量&#xff0c;其值可能存在不确定…

Dify 从入门到精通(第 55/100 篇):Dify 的模型微调(进阶篇)

Dify 从入门到精通&#xff08;第 55/100 篇&#xff09;&#xff1a;Dify 的模型微调 Dify 入门到精通系列文章目录 第一篇《Dify 究竟是什么&#xff1f;真能开启低代码 AI 应用开发的未来&#xff1f;》介绍了 Dify 的定位与优势第二篇《Dify 的核心组件&#xff1a;从节点…

《Password Guessing Using Large Language Models》——论文阅读

1.研究背景LLM在文本生成和理解方面表现出色&#xff0c;但直接用于密码猜测存在以下问题&#xff1a;密码与自然语言的差异&#xff08;短、无语法、需精确匹配&#xff09;生成效率低、重复率高伦理限制&#xff08;如GPT-4拒绝生成大量密码&#xff09;2.本文研究提出PASSLL…

C# 使用OPCUA 与CODESYS进行标签通讯

目录 1.导出的标签 识别标签名称 2.引用OPCUA的包 3.读写方法的封装 4.完整的业务模块封装 1.导出的标签 识别标签名称 从CODESYS导出使用标签通讯的模块文档 大概是这样子的 <?xml version"1.0" encoding"utf-8"?> <Symbolconfiguratio…

C++ 中 `std::map` 的 `insert` 函数

1. 函数的概念与用途 std::map::insert 是 C 标准模板库&#xff08;STL&#xff09;中 map 容器的一个核心成员函数。它的核心任务很明确&#xff1a;向 map 中插入一个新的键值对&#xff08;key-value pair&#xff09;。 核心用途&#xff1a; 数据构建&#xff1a;初始化一…

【机器学习学习笔记】机器学习引言

前言本文章是拨珠自己的学习笔记&#xff0c;自用为主&#xff0c;学习请移步专门教程&#xff0c;若有错误请大佬轻喷&#xff0c;也欢迎同好交流学习。本文将阐述三个问题。什么是机器学习&#xff1f;监督学习、无监督学习到底在干什么&#xff1f;分类、回归、聚类又是怎么…

程序设计---状态机

在软件工程、嵌入式开发、自动化控制等领域&#xff0c;状态机&#xff08;State Machine&#xff09;是一种描述系统行为的强大工具。它通过抽象“状态”“事件”“转换”和“动作”四大核心要素&#xff0c;将复杂的逻辑流程转化为可视化、可验证的状态流转规则&#xff0c;广…

GaussDB 数据库架构师修炼(十八) SQL引擎-分布式计划

1 分布式架构GaussDB基于MPP &#xff08;Massively Parallel Processing&#xff09; 并行架构Streaming流式计算框架2 分布式计划CN轻量化&#xff08;light proxy&#xff09; FQS&#xff08; fast query shipping &#xff09; STREAM计划 XC计划计划类型场景原理CN…

微前端架构核心要点对比

1. 样式隔离 常见的隔离方式有以下几种,还是根据自身业务来确定: 1.1. shadowDOM 目前相对来说使用最多的样式隔离机制。 但shadowDOM并不是银弹,由于子应用的样式作用域仅在 shadow 元素下,那么一旦子应用中出现运行时“翻墙”跑到外面构建 DOM 的场景,必定会导致构建…

VMware 17.6安装包下载与保姆级图文安装教程!

软件下载 [软件名称]&#xff1a;VMware 17.6 [软件大小]&#xff1a;226.66MB [系统环境]&#xff1a;win 7/8/10/11或更高&#xff0c;64位操作系统 VMware合集&#xff0c;软件下载&#xff08;夸克网盘需手机打开&#xff09;&#xff1a;&#xff1a;VMware合集丨夸克网…

关于微服务下的不同服务之间配置不能通用的问题

问题引入现有两个服务&#xff0c;一个是 A 服务&#xff0c;一个是 B 服务&#xff0c;并且这两个服务都需要使用 mysql。现 B 服务中引入了 A 服务的依赖&#xff0c;在 A 服务中添加了 mysql 的相关配置&#xff0c;那么这时就有一个问题&#xff1a;既然 B 已经引入了 A 的…

【机器学习项目 心脏病预测】

文章目录心脏病预测导入数据集数据集介绍理解数据数据处理机器学习K近邻分类器逻辑回归支持向量分类器&#xff08;SVC&#xff09;决策树分类器随机森林分类器结论心脏病预测 在这个机器学习项目中&#xff0c;我们使用UCI心脏病数据集 UCI &#xff0c;并将使用机器学习方法…