服装(交互题)

内核

  1. 注意:需要 fflush(stdout)cout << endl 刷新输出缓冲区。
  2. 交互题的套路:分治、二分、增量法。

题意简述

给定序列长度 \(n \in [2,150]\),你可以在一次询问里得到某一些点的本质不同颜色个数,格式为 k a_1 a_2 a_3 ... a_k
让你确定序列每一个位置的颜色。询问次数要求 \(\le 3500\)

分析

这里使用了增量法和倍增。考虑我们已经确定了前 \(i-1\) 个位置。(询问 \([l,r]\) 的结果记为 \(ask[l][r]\)

  • 若 ask[1][i] = ask[1][i-1] + 1,则说明前 \(i-1\) 个中没有与 \(a_i\) 相同颜色的,记下颜色为 ++tot
  • 否则我们要找到与 \(a_i\) 相同的前一个位置,即找到最左边的一个 \(res\) 使得 \(ask[res][i] = ask[res][i-1] + 1\) 那么说明结果就是 \(res-1\)。那么并查集维护即可。

CODE

#include<bits/stdc++.h>
using namespace std;
const int N = 155;
int n,col[N];
int ask[N][N];
int qry(int l,int r){if(l == r)return 1;if(ask[l][r])return ask[l][r];printf("%d ",r-l+1);for(int i = l;i<=r;++i)printf("%d ",i);fflush(stdout);int res;scanf("%d",&res);return ask[l][r] = res;
}
int tot,fa[N];
int pre[N];
int find(int x){ return fa[x] == x ? x : fa[x] = find(fa[x]); }
int main(){scanf("%d",&n);for(int i = 1;i<=n;++i)fa[i] = i;col[1] = ++tot;for(int i = 2;i<=n;++i){if(qry(1,i) == qry(1,i-1) + 1){col[i] = ++tot;}else{int l = 1, r = i-1, res = i-1;while(l <= r){int mid = (l + r) >> 1;if(qry(mid,i) == qry(mid,i-1) + 1){r = mid - 1;res = mid-1;}else l = mid+1;}fa[i] = find(res);}}printf("0 ");for(int i = 1;i<=n;++i)printf("%d ",col[find(i)]);fflush(stdout);return 0;
}

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

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

相关文章

最大熵原理[解释+例题]

1 熵的概念 熵是热力学中的一个概念,由香浓引入到信息论中。在信息论中,熵是衡量随机变量不确定性的量度,熵越大表示随机变量的不确定性越大,即随机变量越难以预测。 2 熵的计算信息熵的计算可以看笔者的博客:点此跳转。 3 最大熵原理定义 最大熵原理是一种选择随机变量统…

9.9 ~ 9.15

没有摘要9.9 whk 正常上课。 感觉自己一到教室就困,怎么会是呢 总不能是教室人太多缺氧了吧( OI 我干啥了?我干啥了?我干啥了? 9.10 whk 教师节。 所以每节课上课之前我们都会起立并大喊“祝老师教师节快乐”; 然后在奥赛课上也这么干了,给了 \(\text{Huge}\) 一点小小的…

PowerDesigner 逆向工程 Could not Initialize JavaVM!

原项目的大量的表,使用PowerDesigner 进行逆向工程。提示Could not Initialize JavaVM! 网上找到原因,PowerDesigner 不可以使用64位JDK环境!有一种不修改环境变量的方法 在PowerDesigner目录下,建立一个启动批处理,如:startup.bat,在其中配置JAVA_HOME、CLASSPATH,如…

解锁数据潜力,天翼云TeleDB为企业数智蝶变添力赋能!

近日,第15届中国数据库技术大会(DTCC2024)在北京召开。大会以“自研创新 数智未来”为主题,重点围绕向量数据库与向量检索技术实践、数据治理与数据资产管理、云原生数据库开发与实践、特定场景下的数据库管理与优化、大数据平台建设等内容展开分享和探讨。近日,第15届中国…

JDK1.8下载

1. 点击进入下载页 页面地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 目前官方刚对1.8做了一次bug升级,强烈建议使用191或者192的小版本,这里就选择8u191. 2. 先选中上方的接受协议,再选择适合自己操作系统的包 我们这里选…

java学习之HttpClient忽略安全证书(SSLContext)

1.我们在写https请求时候,经常会遇见安全证书(SSL)验证失败的情况,如下图。 上图异常就是因为SSL验证失败导致的,常规的做法是忽略证书认证。方法如下: 第一步:需要重写认证的证书类 X509ExtendedTrustManager。 第二步:创建SSLContext对象。 第三步:将SSLContext对象设…

redmine配置邮件通知

redmine的邮件通知配置文件就在redmine的config文件夹里面 1:我们先到安装路径下面的config,找到configuration.yml,默认是没有的,我们要把模板文件复制一份出来 执行命令:cp configuration.yml.example configuration.yml 2:要先开通邮箱的SMTP服务,我的是126邮箱,开…

Jenkins 编译 .NET 6 WPF

最近公司需求要将产品编译自动化,干了那么多年客户端开发一直都是小作坊作业最近换了一个比较正规的互联网公司一切都需要标准化流程化了,自动化也必不可少!然后我就了解到了Jenkins这玩意,找了两天资料感觉还挺简单的写篇文章收录下。 因为签名UKey只要windows驱动 ,所以…

JMeter 介绍与安装

简介 Apache JMeter 是一个开源的 Java 应用程序,用于进行性能测试和负载测试。 它可以模拟多种协议的负载,被广泛用于测试 Web 应用程序、Web 服务、数据库和其他网络服务的性能。 JMeter 的优点纯 Java 程序,跨平台性强:Windows、Mac、Linux 开源免费。 高可扩展性:支持…

如何使用zabbix内置 key 配置windows服务监控

原作者:乐维社区 原出处:乐维社区 原文章链接:https://forum.lwops.cn/article/618 windows的服务管理工具中有许多不同类型的服务,包括系统、应用程序、驱动程序、自定义服务等。在监控这些windows服务的时候,我们可以直接使用内置的函数key去进行监控。Zabbix的内置key(…

DBeaver clickhouse 时区不对 时间少了8小时

现象: 确认过clickhouse时区配置是正确的(时区配置参考: https://blog.csdn.net/vkingnew/article/details/107227037) 然而 通过DBeaver连接后查询当前时间却慢了8小时,通过命令行连接clickhouse 查看时间又是准确的 命令行查询DBeaver查询原因:是DBeaver配置问题 解决方法:添…