1 条题解

  • 0
    @ 2025-8-24 22:58:04

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar pangyuchen75
    一切皆有可能

    搬运于2025-08-24 22:58:04,当前版本为作者最后更新于2025-03-26 19:30:29,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路

    本题说:

    关系具有反对称性,但不具有传递性。

    这个性质满足归并排序的性质。

    所以可以在归并排序的时候询问两两的大小关系,只需要加一个比较函数即可:

    bool compare(int a, int b) {
        cout << "? " << a << ' ' << b << endl;
        bool t;
        cin >> t;
        return t;
    }
    

    代码

    话不多说,直接上代码:

    #include <iostream>
    using namespace std;
    
    const int N = 1e3 + 5;
    
    int n;
    int a[N];
    int t[N];
    
    bool compare(int a, int b) {
        cout << "? " << a << ' ' << b << endl;
        bool t;
        cin >> t;
        return t;
    }
    
    void Merge_sort(int le, int rt) {
        if (le == rt)
            return;
        
        int mid = (le + rt) / 2;
        Merge_sort(le, mid);
        Merge_sort(mid + 1, rt);
        int i = le, j = mid + 1, k = le;
    
        while (i <= mid && j <= rt) {
            if (compare(a[i], a[j])) {
                t[k] = a[i];
                i ++ ;
            } else {
                t[k] = a[j];
                j ++ ;
            }
    
            k ++ ;
        }
    
        while (i <= mid) {
            t[k] = a[i];
            i ++ ;
            k ++ ;
        }
    
        while (j <= rt) {
            t[k] = a[j];
            j ++ ;
            k ++ ;
        }
    
        for (int x = le; x <= rt; x ++ )
            a[x] = t[x];
    }
    
    void inp() {
        cin >> n;
    }
    
    void work() {
        for (int i = 1; i <= n; i ++ )
            a[i] = i;
        
        Merge_sort(1, n);
        cout << "!";
    
        for (int i = 1; i <= n; i ++ )
            cout << " " << a[i];
        
        puts("");
    }
    
    int main() {
        inp();
        work();
    
        return 0;
    }
    

    完结撒花!

    • 1

    信息

    ID
    10232
    时间
    1000ms
    内存
    512MiB
    难度
    5
    标签
    递交数
    0
    已通过
    0
    上传者