前言

Div.2 Rank \(13\) 获奖了,题目也好评。

解法

题目链接:\(\color{Purple}\texttt{P9916「RiOI-03」Just a Q. (Easy ver.)}\)

从 Subtask \(3\) 出发,考虑构造 \(\prod(a_i+1)\) 这种形式,因为它可以便利地在加入一个新数维护当前乘积的正负性,进而推出该数的正负性;加入一个新数时只需枚举遍历过的每一个子集,对该子集加入该数后形成的集合作询问并存储,可以过 Subtask \(3\)。如果把 \(a_1+1\) 换成 \(a_1\)(即一开始不询问那个空集)那么就能把询问次数除以 \(2\),可以过 Subtask \(4\)。

正解需要一个 trick:先前一个一个数的做法询问次数很多,考虑把一些数一起询问。具体地,使用二分,令 \(m\) 为二分中点,每次将 \(q_{[l,m)}\)(这里 \(m=\left\lceil\frac{l+r}{2}\right\rceil\))绑在一起进行询问。如果 \(Q=0\),那么仿照上面 Subtask \(4\) 对 \(a_1\) 的处理方法把当前集合清空并仅加入 \([l,m)\),正负性直接询问;否则考虑这一段的乘积正负性只需将其询问的最终结果的符号 \(\mathrm{sgn}(Q')\) 与上一次的结果的符号 \(\mathrm{sgn}(Q)\) 比较,如果相同则这一段乘积为正,否则为负。

原来的集合可以用 std::vector 存储 std::pair 实现。

放代码:

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
char ask(vector<pii> a){
vector<int> v; char c;
for(auto [l,r]:a)
for(int j=l;j<=r;j++)
v.emplace_back(j);
cout<<"? "<<v.size()<<' ';
for(int i:v)cout<<i<<' ';
cout<<endl,cin>>c;
return c;
} // 单次询问
int main(){
ios::sync_with_stdio(false);
int t; cin>>t;
while(t--){
int n,k; cin>>n>>k>>n;
int l=1,r=n; bool f=true; char s='+';
vector<vector<pii> > a;
while(l<r){
int m=l+r+1>>1; char c;
if(f){
s='+',a={{make_pair(l,m-1)}};
c=ask(a[0]),f=false;
} // Q=0 时
else{
vector<vector<pii> > b;
for(auto i:a){
vector<pii> v=i;
v.emplace_back(l,m-1);
b.emplace_back(v);
c=ask(v);
} // 遍历并询问
a.insert(a.end(),b.begin(),b.end());
// 将产生的新集合加入 a 中
}
if(c==s)l=m; // 贡献为正,负数在右
else if(c==48)r=m-1,f=true;
else s=c,r=m-1; // 贡献为非正数,负数在左
}
cout<<"! "<<l<<endl;
}
return 0;
}

洛谷 P9916 「RiOI-03」Just a Q. (Easy ver.) 题解的更多相关文章

  1. [洛谷P3701]「伪模板」主席树

    题目大意:太暴力了,就不写了,看这儿 题解:对于每个$byx$的人,从源点向人连边,容量为此人的寿命. 对于每个手气君的人,从人向汇点连边,容量为此人的寿命. 对于每个$byx$的人与手气君的人,如果 ...

  2. LOJ 3119: 洛谷 P5400: 「CTS2019 | CTSC2019」随机立方体

    题目传送门:LOJ #3119. 题意简述: 题目说的很清楚了. 题解: 记恰好有 \(i\) 个极大的数的方案数为 \(\mathrm{cnt}[i]\),则答案为 \(\displaystyle\ ...

  3. LOJ 3120: 洛谷 P5401: 「CTS2019 | CTSC2019」珍珠

    题目传送门:LOJ #3120. 题意简述: 称一个长度为 \(n\),元素取值为 \([1,D]\) 的整数序列是合法的,当且仅当其中能够选出至少 \(m\) 对相同元素(不能重复选出元素). 问合 ...

  4. 洛谷 P4710 「物理」平抛运动

    洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...

  5. 洛谷比赛 「EZEC」 Round 4

    洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...

  6. 题解-洛谷P6788 「EZEC-3」四月樱花

    题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y ...

  7. 洛谷P2891 Dining P1402 酒店之王【类二分图匹配】题解+代码

    洛谷P2891 Dining P1402 酒店之王[类二分图匹配]题解+代码 酒店之王 题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的 ...

  8. 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码

    洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...

  9. LOJ 2743(洛谷 4365) 「九省联考 2018」秘密袭击——整体DP+插值思想

    题目:https://loj.ac/problem/2473 https://www.luogu.org/problemnew/show/P4365 参考:https://blog.csdn.net/ ...

  10. 洛谷 P7879 -「SWTR-07」How to AK NOI?(后缀自动机+线段树维护矩乘)

    洛谷题面传送门 orz 一发出题人(话说我 AC 这道题的时候,出题人好像就坐在我的右侧呢/cy/cy) 考虑一个很 naive 的 DP,\(dp_i\) 表示 \([l,i]\) 之间的字符串是否 ...

随机推荐

  1. Python+Selenium+Webdriver+unittest 实现登录126邮箱

    第一版:登录 #encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webd ...

  2. 基于Raft算法的DLedger-Library分析

    1 背景 在分布式系统应用中,高可用.一致性是经常面临的问题,针对不同的应用场景,我们会选择不同的架构方式,比如master-slave.基于ZooKeeper选主.随着时间的推移,出现了基于Raft ...

  3. Redis存储商品热度

    项目中有一个需求,就是可以根据商品的热度进行排序 起初想着使用string类型来存储如: sku:hotscore:商品的ID 但是这回有个问题,当商品数量多了那k-v岂不是得炸了,维护起来也非常不方 ...

  4. MySQL 8.0.32 InnoDB ReplicaSet 配置和手动切换

    1.环境准备 主库:192.168.137.4 mytest3 从库:192.168.137.5 mytest4 MySQL: 8.0.32 2.配置 ReplicaSet 实例 启动 mysql s ...

  5. 内核模块(.ko) 开发入门

    内核模块时指的是在操作系统内核中动态加载的一段代码,它可以扩展和增强操作系统的功能.内核模块通常用于为操作系统添加新的设备驱动程序.文件系统.网络协议栈等功能. 内核模块是以二进制形式存在的(*.ko ...

  6. C++ Qt开发:Charts绘制各类图表详解

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TreeWid ...

  7. Javascript Ajax总结——HTTP头部信息

    每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用,有的没用.XHR对象也提供了操作这两种头部(即请求头部和响应头部)信息的方法.默认情况下,在发送XHR请求的同时,还会发送下列头部 ...

  8. postman——预处理和断言

    一.预处理 Pre-request Scrip 1.Pre-request Script是集合中请求发送之前需要执行的代码片段 2.请求参数中包含一个随机数或者请求header中包括一个时间戳,或者你 ...

  9. Spring IOC 解析

    Bean 容器的创建 ApplicationContext 的类结构: 通过上图可以看到,具体的 ApplicationContext 有 AnnotationConfigApplicationCon ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (43)-- 算法导论5.4 7题

    七.为使特征序列长度的下界变得更精确,请说明在 n 次硬币的公平抛掷中,不出现比Ign - 2lglgn 更长的连续正面特征序列的概率小于 1/n. 文心一言: 在 n 次硬币的公平抛掷中,每个硬币正 ...