提交记录 16558


用户 题目 状态 得分 用时 内存 语言 代码长度
NanoApe 2002. 【NOIP2018】旅行(加强版) Wrong Answer 0 12.111 ms 8 KB C++11 2.12 KB
提交时间 评测时间
2021-10-06 03:00:15 2021-10-06 03:00:19
#include <cstdio>
#include <algorithm>

int d[10];

// lexicographical_order: 11.888 ms
void lexicographical_order(const int size)
{
    int tot = 1, i, j;
    for (i = 0; i < size; i++) d[i] = i+1, tot *= i+1;
    // for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
    while (--tot)
    {
        i = size - 2;
        while (d[i] > d[i+1]) i--;
        j = size - 1;
        while (j != i) {
            if (d[j] > d[i]) {
                std::swap(d[j], d[i]);
                break;
            } else j--;
        }
        i++;
        j = size - 1;
        while (i < j) {
            std::swap(d[i], d[j]);
            i++; j--;
        }
        // for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
    }
}

// incremental_way: 87.111 ms
void incremental_way(const int size)
{
    int p[10], tot = 1, i, j, k, l;
    for (i = 0; i < size; i++) d[i] = i+1, tot *= i+1, p[i] = tot;
    tot = 0;
    // for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
    while (++tot < p[size-1])
    {
        i = 0;
        while (tot % p[i+1] == 0) i++;
        j = 0;
        k = 0;
        for (j = 0; j < size; j++) {
            if (d[j] <= i+1) {
                d[j] = i+2 - d[j];
                k = j;
            } else if (d[j] == i+2) {
                std::swap(d[j], d[k]);
            }
        }
        // for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
    }
}

// decremental_way: ? ms
void decremental_way(const int size)
{
    int tot = 1, i, j, k, l;
    for (i = 0; i < size; i++) d[i] = i+1, tot *= i+1;
    // for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
    while (--tot)
    {
        i = 0; while (d[i] + i == size) i++;
        if (i) {
            j = i; while (j < size) d[j-i] = d[j], j++;
            j = i; while (j) d[size-j] = size-j+1, j--;
        }
        j = size-i-1; while (d[j] != size-i) j--;
        std::swap(d[j], d[j-1]);
        // for (i = 0; i < size; i++) printf("%d%c", d[i], i==size-1?'\n':' ');
    }
}

int main()
{
    // lexicographical_order(10);
    // incremental_way(10);
    decremental_way(10);
    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #112.073 ms8 KBWrong AnswerScore: 0

Testcase #212.077 ms8 KBWrong AnswerScore: 0

Testcase #312.075 ms8 KBWrong AnswerScore: 0

Testcase #412.072 ms8 KBWrong AnswerScore: 0

Testcase #512.104 ms8 KBWrong AnswerScore: 0

Testcase #612.069 ms8 KBWrong AnswerScore: 0

Testcase #712.107 ms8 KBWrong AnswerScore: 0

Testcase #812.072 ms8 KBWrong AnswerScore: 0

Testcase #912.111 ms8 KBWrong AnswerScore: 0

Testcase #1012.074 ms8 KBWrong AnswerScore: 0

Testcase #1112.071 ms8 KBWrong AnswerScore: 0

Testcase #1212.07 ms8 KBWrong AnswerScore: 0

Testcase #1312.071 ms8 KBWrong AnswerScore: 0

Testcase #1412.076 ms8 KBWrong AnswerScore: 0

Testcase #1512.071 ms8 KBWrong AnswerScore: 0

Testcase #1612.067 ms8 KBWrong AnswerScore: 0

Testcase #1712.073 ms8 KBWrong AnswerScore: 0

Testcase #1812.074 ms8 KBWrong AnswerScore: 0

Testcase #1912.072 ms8 KBWrong AnswerScore: 0

Testcase #2012.067 ms8 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-19 00:19:35 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠