CF1556D. Take a Guess(交互 性质)

简介: CF1556D. Take a Guess(交互 性质)

原题链接

题意:

给出数组的长度n

每次可以询问a   a n d   b和a   o r   b。(a , b为数组元素下标)

问数组中第k大。

询问次数不超过2 n次

思路:

20200401134307494.png

可以先询问a 1 ∣ a i 和a 1 & a i。这样得到a 1   x o r   a i .

然后询问a 2 ∣ a 3和a 2 & a 3,得到a2+a3a 1 = a 1 + a 2 + a 1 + a 3 − a 2 − a 3 2 a_1=\frac{a1+a2+a1+a3-a2-a3}{2}a

1=2a1+a2+a1+a3−a2−a3

 

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<list>
#include<unordered_map>
//#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll>PLL;
typedef pair<int, int>PII;
typedef pair<double, double>PDD;
#define I_int ll
inline ll read(){ll 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 * 10 + ch - '0';ch = getchar();}return x * f;}
inline void write(ll x){if (x < 0) x = ~x + 1, putchar('-');if (x > 9) write(x / 10);putchar(x % 10 + '0');}
#define read read()
#define closeSync ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define multiCase int T;cin>>T;for(int t=1;t<=T;t++)
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i<(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define perr(i,a,b) for(int i=(a);i>(b);i--)
ll ksm(ll a, ll b,ll mod){ll res = 1;while(b){if(b&1)res=res*a%mod;a=a*a%mod;b>>=1;}return res;}
const int maxn=2e5+100,inf=0x3f3f3f3f;
const double eps=1e-5;
int n,k,_and[maxn],_or[maxn],ans[maxn];
int main(){
#ifdef LOCAL
    freopen("in.in","r",stdin);
    freopen("out.out","w",stdout);
#endif
  scanf("%d%d",&n,&k);
  rep(i,2,n){
    printf("and 1 %d\n",i);
    fflush(stdout);
    scanf("%d",&_and[i]);
    printf("or 1 %d\n",i);
    fflush(stdout);
    scanf("%d",&_or[i]);
    ans[i]=_or[i]-_and[i];
  }
  int x,y;
  printf("and 2 3\n");
  fflush(stdout);
  cin>>x;
  printf("or 2 3\n");
  fflush(stdout);
  cin>>y;
  ans[1]=((_and[2]+_or[2])+(_and[3]+_or[3])-(x+y))/2;
  rep(i,2,n) ans[i]=ans[i]^ans[1];
  sort(ans+1,ans+1+n);
  printf("finish %d\n",ans[k]);
  return 0;
}


目录
相关文章
|
4月前
|
机器学习/深度学习 存储 算法
回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现
本文详细介绍了回声状态网络(Echo State Networks, ESN)的基本概念、优点、缺点、储层计算范式,并提供了ESN的Python代码实现,包括不考虑和考虑超参数的两种ESN实现方式,以及使用ESN进行时间序列预测的示例。
189 4
回声状态网络(Echo State Networks,ESN)详细原理讲解及Python代码实现
|
9天前
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
|
7月前
|
安全
通用电气 IS220PTURH1BF 涡轮机输入/输出(输入/输出组件)
通用电气 IS220PTURH1BF 涡轮机输入/输出(输入/输出组件)
通用电气 IS220PTURH1BF 涡轮机输入/输出(输入/输出组件)
|
前端开发 芯片
【芯片前端】基于DC综合的逻辑深度与cell count汇总:加法器
【芯片前端】基于DC综合的逻辑深度与cell count汇总:加法器
137 0
|
机器学习/深度学习
CF1000C Covered Points Count(拆分思想,分成2种类型)
CF1000C Covered Points Count(拆分思想,分成2种类型)
63 0
编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转“To be or not to be“,将变成“oT eb ro ton ot eb“。
编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转“To be or not to be“,将变成“oT eb ro ton ot eb“。
219 0
CF763A Timofey and a tree(思维)
CF763A Timofey and a tree(思维)
82 0
|
人工智能 测试技术
cf1653c通过操作让数组序列呈现某种规律 C. Differential Sorting
cf1653c通过操作让数组序列呈现某种规律 C. Differential Sorting
82 0
|
存储 算法 Python
众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3
有人说,如果一个人相信运气,那么他一定参透了人生。想象一下,如果你在某款moba游戏中,在装备平平,队友天坑的情况下,却刀刀暴击,在一小波gank中轻松拿下五杀,也许你会感叹自己的神操作和好运气,但其实,还有另外一种神秘的力量在支配着这一切,那就是:随机算法。
众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3
|
Windows
CF1343E. Weights Distributing(最短路 枚举 思维)
CF1343E. Weights Distributing(最短路 枚举 思维)
84 0