Codeforces 题面传送门 & 洛谷题面传送门

首先考虑一个询问 \(20\) 次的方案,考虑每一位,一遍询问求出下标的这一位上为 \(0\) 的位置上值的 bitwise or,再一遍询问求出下标的这一位上为 \(1\) 的位置上值的 bitwise or,然后这一位上为 \(0\) 的位置对这一位上为 \(1\) 的位置产生对应的贡献,同理这一位上为 \(1\) 的位置对这一位上为 \(0\) 的位置产生对应的贡献。

这个询问次数显然无法通过。注意到这个 \(13\) 的限制给得比较奇怪,并且有 \(\dbinom{13}{6}=1716>1000\)。因此考虑将每个位置赋上一个 \([0,8191]\) 且二进制下恰好包含 \(6\) 个 \(1\) 的编号,然后第 \(i\) 次询问编号的第 \(i\) 位上为 \(1\) 的位置的 bitwise or,然后更新编号第 \(i\) 位上为 \(0\) 的位置的答案即可。注意到每个数的编号不存在包含关系,因此对于任意两个 \(i\ne j\),必然存在某一位 \(k\) 满足 \(i\) 第 \(k\) 位为 \(0\),而 \(j\) 第 \(k\) 位为 \(1\),这样任意两对不同的数都会对对方产生贡献了。

const int MAXN=1716;
int n,msk[MAXN+5],mcnt=0;
ll res[MAXN+5];
void ask(vector<int> v){
if(v.empty()) return;
static bool vis[MAXN+5];
printf("? %d",v.size());memset(vis,0,sizeof(vis));
for(int x:v) printf(" %d",x),vis[x]=1;printf("\n");
fflush(stdout);ll val;scanf("%lld",&val);
for(int i=1;i<=n;i++) if(!vis[i]) res[i]|=val;
}
int main(){
scanf("%d",&n);
for(int i=0;i<8192;i++) if(__builtin_popcount(i)==6)
msk[++mcnt]=i;
for(int i=0;i<13;i++){
vector<int> v;
for(int j=1;j<=n;j++) if(msk[j]>>i&1) v.pb(j);
ask(v);
} printf("! ");
for(int i=1;i<=n;i++) printf("%lld%c",res[i]," \n"[i==n]);
fflush(stdout);
return 0;
}

最新文章

  1. Meteor + node-imap(nodejs) + mailparser(nodejs) 实现完整收发邮件
  2. Docker中搭建Hadoop-2.6单机伪分布式集群
  3. 基于php5.6 php.ini详解
  4. JAVA WEB 作用域之间的区别
  5. C#数据类型-string
  6. OpenLayers加载QQ地图(转)
  7. 创建oracle数据库的表空间、用户、目录、导入\导出文件等信息
  8. WebApi Ajax 跨域请求解决方法(CORS实现)
  9. MongoDB学习笔记&amp;lt;一&amp;gt;
  10. 解决SecureCRT中文版&quot;数据库里没找到防火墙&#39;无&#39;&quot;的错误提示
  11. [PHP]算法-队列结构的PHP实现
  12. react服务端渲染同构报错Browser history needs a DOM
  13. Proc文件系统接口调试
  14. ARCSDE直连Oracle时出现错误Failed to connect to the specified server. Underlying DBMS error[ORA-12154: TNS:could not resolve the connect identifier specified. No extended error]
  15. JS 数组对象根据下标拆分成新的数组
  16. source insight 相对路径新建工程
  17. node基于express的socket.io
  18. Search a 2D Matrix leetcode java
  19. [EffectiveC++]item34:区分接口继承和实现继承
  20. ASP.NET和ASP的区别是什么

热门文章

  1. 脚本注入2(post)
  2. Java:容器类线程不安全
  3. 【二食堂】Alpha - Scrum Meeting 2
  4. OO_JAVA_电梯运行模拟_单元总结
  5. 使用cerebro可视化ElasticSearch集群信息
  6. 【做题记录】DP 杂题
  7. CentOS8 部署 MySQL8
  8. [转]DDR内存条rank的概念和区分
  9. 设计模式二--模板方法Template method
  10. LeetCode-40. 组合总和 II C++(回溯法)