题解 | #小美的排列构造#

小美的排列构造

https://ac.nowcoder.com/acm/problem/257811

这种题一看就有很强的规律性,不如打个表,python打表很方便,代码如下

if __name__ == "__main__":
    n = 6
    res = []
    diff = inf
    for p in permutations(range(1, n + 1)):
        mx = -inf
        mn = inf
        for a,b in pairwise(p):
            mx = max(mx, a + b)
            mn = min(mn, a + b)
        if mx - mn < diff:
            res = p
            diff = mx - mn
    print(res)

可以看看结果如下

    (1, 3, 2)
    (1, 4, 2, 3)
    (1, 5, 2, 4, 3)
    (1, 6, 2, 5, 3, 4)

发现就是一个顺序和逆序。 那么答案就是:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define close ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
signed main() {
    close;
    int n; cin >> n;
    vector<int> a(n);
    int num = 1;
    for(int i = 0; i < n; i+=2) a[i] = num++;
    num = n;
    for(int i = 1; i < n; i+=2) a[i] = num--;
    for(auto i: a) cout << i << " ";
    return 0;
}

那么如何分析正解呢,对于,显然为0。

对于的情况: 我们可以构造一个加1减1的序列,这样就能够保证绝对差肯定为1

全部评论

相关推荐

02-25 16:55
已编辑
北京工业大学 Java
211本,找日常实习的话,如果面向中厂的话,需要刷hot100么?因为之前从来没刷过,算法仅限于学校课程水平,准备3月投递简历,现在还需要背八股文,时间有些紧张,还需要刷算法题么?同时什么样的公司可以算是中厂呢?
程序员小白条:中大厂说的上名字的,必定要算法,hot100只是最基础的了,题库远不止100题捏,一般在300-400题量之间,算法=学校课程=简单题也做不出,多准备八股文和算法吧,其他项目可以放放,精刷算法就行了,花时间成长很快的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务