zoukankan      html  css  js  c++  java
  • CodeForces 809B Glad to see you!

    Glad to see you!

    题解:

    交互题一般都是需要用二分去完成。

    在二分时候每次检查左边和右边哪边会和答案更近, 然后在更近的那段新区间去重复检查, 知道区间长度为1。

    在检查的时候,可以使得答案更近贴近于左边,或者右边。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
    #define LL long long
    #define ULL unsigned LL
    #define fi first
    #define se second
    #define pb push_back
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define lch(x) tr[x].son[0]
    #define rch(x) tr[x].son[1]
    #define max3(a,b,c) max(a,max(b,c))
    #define min3(a,b,c) min(a,min(b,c))
    typedef pair<int,int> pll;
    const int inf = 0x3f3f3f3f;
    const int _inf = 0xc0c0c0c0;
    const LL INF = 0x3f3f3f3f3f3f3f3f;
    const LL _INF = 0xc0c0c0c0c0c0c0c0;
    const LL mod =  (int)1e9+7;
    const int N = 2e5 + 100;
    char s[N];
    int solve(int l, int r){
        while(l != r){
            int mid1 = l+r >> 1;
            int mid2 = mid1 + 1;
            printf("1 %d %d
    ", mid2, mid1);
            fflush(stdout);
            scanf("%s", s);
            if(s[0] == 'T') l = mid2;
            else  r = mid1;
        }
        return l;
    }
    int solve2(int l, int r){
        while(l != r){
            int mid1 = l+r >> 1;
            int mid2 = mid1+1;
            if((l+r)%2 == 0){
                mid1--;
                mid2--;
            }
            printf("1 %d %d
    ", mid1, mid2);
            fflush(stdout);
            scanf("%s", s);
            if(s[0] == 'T') r = mid1;
            else  l = mid2;
        }
        return l;
    }
    int main(){
        int n, k;
        scanf("%d%d", &n, &k);
        int p1 = solve(1, n);
        int p2 = solve2(1, p1);
        int p3 = solve(p1, n);
        int a[3] = {p1, p2, p3};
        sort(a, a+3);
        printf("2 %d %d
    ", a[0], a[2]);
        fflush(stdout);
        return 0;
    }
    View Code
  • 相关阅读:
    453. Minimum Moves to Equal Array Elements
    CDH的安装
    Java注解
    BeanUtils--内省加强
    Java内省
    ant工具
    log4j的配置及使用
    武汉科技大学ACM:1010: 零起点学算法89——母牛的故事
    武汉科技大学ACM:1009: 华科版C语言程序设计教程(第二版)例题5.4
    武汉科技大学ACM:1007: 不高兴的津津
  • 原文地址:https://www.cnblogs.com/MingSD/p/10885899.html
Copyright © 2011-2022 走看看