1 条题解

  • 0
    @ 2025-6-10 20:12:28

    题意分析

    题目基于忒修斯与弥诺陶洛斯的传说,要求模拟两者在迷宫中的追捕过程。迷宫由洞穴和通道组成,忒修斯和弥诺陶洛斯初始位于不同通道,每次移动时会同时进入相邻洞穴。忒修斯遵循右手法则(右转)并标记出口,若发现弥诺陶洛斯痕迹则优先选择其出口;弥诺陶洛斯左转并标记出口,若感知洞穴有烛光则折返。若两者在洞穴相遇,忒修斯获胜;若在通道相遇,弥诺陶洛斯获胜。输入包含迷宫结构和初始位置,输出最终胜者及地点。

    解题思路

    代码使用模拟法跟踪两者移动:1)构建邻接表表示迷宫结构;2)维护两者当前位置、移动方向及标记记录;3)每次迭代中,忒修斯按右手法则选择出口并标记,弥诺陶洛斯按左手法则选择出口并标记;4)检查相遇条件:若在洞穴且忒修斯有烛光或弥诺陶洛斯无出口则忒修斯胜,若在通道则弥诺陶洛斯胜;5)按题目规则处理特殊情况(如忒修斯跟随弥诺陶洛斯路径),最终输出结果。

    
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    int t, n, k;
    int s[1034];
    int main() {
        scanf("%d", &t);
        while (t--) {
            scanf("%d%d", &n, &k);
            for (int i = 0; i < n; i++)    scanf("%d", s + i);
            int cnt = 0, i;
            do {
                cnt++;
                for (i = 0; i < n; i++)
                    if (s[i] != n - i)   break;
                if (i == n) {
                    cnt++;
                    for (int i = 0; i < n; i++)    s[i] = i + 1;
                }
                if (cnt == k + 1)  break;
            } while (next_permutation(s, s + n));
            for (int i = 0; i < n; i++)    printf("%d%c", s[i], i == n - 1 ? '\n' : ' ');
        }
        return 0;
    }
    
    • 1

    信息

    ID
    884
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者