Codeforces 1365G - Secure Password(思维题)
首先考虑一个询问 \(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;
}
Codeforces 1365G - Secure Password(思维题)的更多相关文章
- CF--思维练习-- CodeForces - 215C - Crosses(思维题)
ACM思维题训练集合 There is a board with a grid consisting of n rows and m columns, the rows are numbered fr ...
- Codeforces 675C Money Transfers 思维题
原题:http://codeforces.com/contest/675/problem/C 让我们用数组a保存每个银行的余额,因为所有余额的和加起来一定为0,所以我们能把整个数组a划分为几个区间,每 ...
- Codeforces 1090D - Similar Arrays - [思维题][构造题][2018-2019 Russia Open High School Programming Contest Problem D]
题目链接:https://codeforces.com/contest/1090/problem/D Vasya had an array of n integers, each element of ...
- codeforces 1140D(区间dp/思维题)
D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- Codeforces 957 水位标记思维题
A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...
- ACM思维题训练 Section A
题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...
- codeforces ~ 1009 B Minimum Ternary String(超级恶心的思维题
http://codeforces.com/problemset/problem/1009/B B. Minimum Ternary String time limit per test 1 seco ...
- 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas
题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...
- C. Nice Garland Codeforces Round #535 (Div. 3) 思维题
C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
随机推荐
- python中常用的导包的方法和常用的库
python中常用的导包的方法 导入包和包名的方法:1.import package.module 2.from package.module import * 例一: ...
- 【UE4 C++】编程子系统 Subsystem
概述 定义 Subsystems 是一套可以定义.自动实例化和释放的类的框架.可以将其理解为 GamePlay 级别的 Component 不支持网络赋值 4.22开始引入,4.24完善.(可以移植源 ...
- Coursera Deep Learning笔记 卷积神经网络基础
参考1 参考2 1. 计算机视觉 使用传统神经网络处理机器视觉的一个主要问题是输入层维度很大.例如一张64x64x3的图片,神经网络输入层的维度为12288. 如果图片尺寸较大,例如一张1000x10 ...
- logstash收集的日志输出到elasticsearch中
logstash收集的日志输出到elasticsearch中 一.需求 二.实现步骤 1.编写pipeline文件 1.`elasticsearch`配置参数解析: 2.可能会报的一个异常 2.准备测 ...
- 2021.10.11考试总结[NOIP模拟74]
T1 自然数 发现\(mex\)是单调不降的,很自然地想到用线段树维护区间端点的贡献. 枚举左端点,用线段树维护每个右端点形成区间的\(mex\)值.每次左端点右移相当于删去一个数. 记\(a_i\) ...
- 从四个方向分析我们可以从linux学到什么
我们真正关心的是自身可以从这个生态圈中获得些什么?说得更直白一点就是,我们可以从linux系统上面学到点什么,它对我们个人的成长和发展有哪些积极的因素.个人觉得,完全可以通过下面四个维度并结合自己的兴 ...
- shell脚本自学笔记
一. 什么是Shell脚本 shell脚本并不能作为正式的编程语言,因为它是在linux的shell中运行的,所以称为shell脚本.事实上,shell脚本就是一些命令的集合. 假如完成某个需求需要一 ...
- 第33篇-方法调用指令之invokeinterface
invokevirtual字节码指令的模板定义如下: def(Bytecodes::_invokeinterface , ubcp|disp|clvm|____, vtos, vtos, invoke ...
- 攻防世界 web5.disabled_button
我觉得戴上手套按应该可以! 方法一: 打开网址,发现flag按钮无法点击,F12查看源代码,删除disabled=" ",flag就点击了. 方法二 POST请求, 先分析一下源代 ...
- 如何系统学习C 语言(上)之 基础篇
大话C 语言(一) 初识C 语言 老实说,上大学之前我根本不知道什么是C 语言,所以当初学校开设这门课时,我是充满了好奇,所以当初我翻阅了大量的C 语言入门书籍,千篇一律,都是从一些概念.术语和理论讲 ...