Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)D. Take a Guess
时间:2021-09-03
本文章向大家介绍Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)D. Take a Guess,主要包括Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)D. Take a Guess使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我讨厌交互题,也不喜欢位运算
这一题真是符合我的胃口
首先如果知道 $a,b$ 两个未知数的 按位并值 和 按位或值
则可以知道 $a,b$ 两个数的 按位异或值:
$a&b=x,a|b=y$ 则 $a$ ^ $b=x$ ^ $y$ ,这个算是经典结论了,证明只要分类讨论一下即可
所以先花 $2n-2$ 次询问把数量所有相邻的两个数的 $&$ 和 $|$ 得到
然后就可得到相邻数的异或和,再根据异或的简单性质,我们就能知道任意两个数的异或和是多少
现在如果我们能得到某个位置的具体值,就可以利用任意两数的异或和来反向推导每个数了
不妨求第一个数的值,最后两次询问可以选择问第一个数和第三个数的 并 与 或,这样就有 $a_1$ , $a_2$ , $a_3$ 两两的 并 与 或
然后进行一波分类讨论发现可以确定第一个数二进制的每一位(具体怎么分类讨论自己动动笔就好了)
然后就做完了
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; typedef long long ll; const int N=1e4+7; inline int read() { int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f; } int n,k,ans[N]; int a[N],o[N],x[N],xr[N]; int main() { n=read(),k=read(); for(int i=1;i<n;i++) { printf("and %d %d\n",i,i+1); fflush(stdout); a[i]=read(); } for(int i=1;i<n;i++) { printf("or %d %d\n",i,i+1); fflush(stdout); o[i]=read(); } for(int i=1;i<=n;i++) x[i]=a[i]^o[i]; for(int j=2;j<=n;j++) xr[j]=xr[j-1]^x[j-1]; printf("and 1 3\n"); fflush(stdout); int b=read(); printf("or 1 3\n"); fflush(stdout); int c=read(); int a1=0; for(int i=0;i<=30;i++) { int x=a[1]&(1<<i),y=b&(1<<i),z=a[2]&(1<<i); if(x||y) { a1|=(1<<i); continue; } if(z) continue; if(o[1]&(1<<i) && c&(1<<i)) a1|=(1<<i); } ans[1]=a1; for(int i=2;i<=n;i++) ans[i]=a1^xr[i]; sort(ans+1,ans+n+1); cout<<"finish "<<ans[k]<<endl; return 0; }
原文地址:https://www.cnblogs.com/LLTYYC/p/15224959.html
- 用R语言做时间序列分析(附数据集和源码)
- 【android开发】Android GUI系统学习1:Gralloc
- 【kaggle实战】从KNN,LR,SVM,RF到深度学习
- 开发 | 训练一个AI给颜值打分,公平公正!
- 【android开发】Android HAL模块实现
- 让剁手党洞察物体细节,“放大镜”当之无愧
- CSS3过渡,不再为JS动画而犯愁
- 【编程基础】c语言中获取整数和浮点数的符号位
- 前端特效开发 | JS实现聚光灯看图效果
- 【专业知识】Android主线程的消息系统(Handler\Looper)
- CSS3渐变,就是这么玩
- 前端特效开发 | 图片翻转的制作
- 【Windows编程】系列第四篇:使用Unicode编程
- CSS3蒙版 — 元旦快乐!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AkShare-中国宏观-全社会用电分类情况表
- Angular应用从Component到Html的数据绑定是如何实现的
- 3分钟短文:Laravel Form,让你不再写 HTML 的好“库”
- Angular应用input和div标签页的动态创建场景
- 在Angular的index.html里插入script,拦截所有动态创建标签页的场景
- Angular应用里input字段后面的_ngcontent-hqi是什么含义
- WPF 已知问题 窗口在屏幕外创建将不会刷新渲染
- NuGet 更新库新版本的缓存问题
- 在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!
- 开源后台系统*mee-admin*
- stc89c52在Linux或MacOS下使用sdcc和stcgal中断与LCD测试代码
- 豆瓣9.2分!17万条弹幕告诉你《沉默的真相》凭什么口碑高开暴走!
- Shader 入门:GLSL ES(迭代、选择和跳转)
- Github 与 Git,新手初次接触的尴尬历程
- vue-cli3配置路径别名