zoukankan      html  css  js  c++  java
  • Codeforces Round #669 (Div. 2)/1407C Chocolate Bunny

    题目链接:https://codeforces.com/contest/1407/problem/C

    题目大意:交互题:你可以询问一个数组的两个下标i,j,机器返回 a[i] % a[j] 的值,最多可以询问2次,最后输出数组

    题目思路:先询问 a[i] % a[j] 的值p,再询问 a[j] % a[i] 的值q,如果p更大,a[i] = p,否则 a[j] = q,我们设一个k,每次将不确定的值与下一个作比较

    题目坑点: ①结束时先输出 ”!“ 告诉机器结束询问,注意有个空格②printf不会刷新缓冲区,询问需要使用endl

    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <vector>
    #include <map>
    #include <string>
    #include <cstring>
    #include <set>
    #include <stack>
    #include <deque>
    #include <queue>
    #include <cmath>
    using namespace std;
    typedef pair<int, int> PII;
    typedef long long ll;
    typedef unsigned long long ull;
    const int INF = 0x3f3f3f3f;
    const int N = 1e4 + 10, M = 1e6 + 10;
    const int base = 1e9;
    const int P = 131;
    const int MAX = 1e5;
    int n, m, t;
    int a[N];
    int main()
    {
        scanf("%d", &n);
        int k = 1;
        for (int i = 2; i <= n; ++i)
        {
            int p, q;
            //printf("? %d %d\n", k, i);
            cout << "? " << k << " " << i << endl;
            scanf("%d", &q);
            //printf("? %d %d\n", i, k);
            cout << "? " << i << " " << k << endl; //endl刷新缓冲区
            scanf("%d", &p);
            if (q < p)
                a[i] = p; //p大,a[i]小
            else
                a[k] = q, k = i; //q大,a[k]小,将a[i]变为a[k]
        }
        a[k] = n; //最后留下的k一定是最大值n
        printf("!");
        for (int i = 1; i <= n; i++)
            printf(" %d", a[i]);
        printf("\n");
        return 0;
    }
    
  • 相关阅读:
    Java中HashMap底层实现原理(JDK1.8)源码分析
    java io系列01之 "目录"
    数据结构与算法系列 目录
    Java 集合系列目录(Category)
    ls参数
    在PATH路径中添加新的路径
    目录相关的操作
    chmod
    属性类型
    ls -al
  • 原文地址:https://www.cnblogs.com/xiaopangpangdehome/p/14050185.html
Copyright © 2011-2022 走看看