codeforces赛后总结——1556D. Take a Guess

2021/9/13 23:10:00

本文主要是介绍codeforces赛后总结——1556D. Take a Guess,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目见:Problem - D - Codeforces

有点意思的交互题,核心是(a+b)=(a&b)+(a|b)。

对(a1+ai)进行排序即可得到(a1+ans)。

再求一下a1的值就可以。

#include <bits/stdc++.h>
#define N 10010
using namespace std;
int n,k,tmp1,tmp2;
int a1,a1_plus[N],a23;
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=2;i<=n;i++)
    {
        printf("and 1 %d\n",i);
        fflush(stdout);
        printf("or 1 %d\n",i);
        fflush(stdout);
        scanf("%d%d",&tmp1,&tmp2);
        a1_plus[i]=tmp1+tmp2;
    }
    printf("and 2 3\n");
    printf("or 2 3\n");
    fflush(stdout);
    scanf("%d%d",&tmp1,&tmp2);
    a23=tmp1+tmp2;
    a1=(a1_plus[2]+a1_plus[3]-a23)/2;
    a1_plus[1]=a1+a1;
    sort(a1_plus+1,a1_plus+1+n);
    printf("finish %d\n",a1_plus[k]-a1);
    fflush(stdout);
    return 0;
}

 



这篇关于codeforces赛后总结——1556D. Take a Guess的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程