leetcode 3577

3577: 统计计算机解锁顺序排列数

用计算机 j 解锁计算机 i 的前提是 j<i 且 complexityj<complexityi

观察:

  • 一开始就解锁的只有计算机 0。
  • 第一轮,被 0 解锁的计算机(记作集合 A),密码复杂度比 complexity0 大。
  • 第二轮,被集合 A 中的计算机解锁的计算机(记作集合 B),密码复杂度更大,所以也比 complexity0 大。
  • 第三轮,被集合 B 中的计算机解锁的计算机(记作集合 C),密码复杂度更大,所以也比 complexity0 大。
  • 依此类推,所有被解锁的计算机的密码复杂度都要比 complexity0 大。

定理:当且仅当计算机 0 右边的所有计算机的密码复杂度都比 complexity0 大,才能解锁所有计算机。

证明:

根据定理,如果计算机 0 右边的所有计算机的密码复杂度都比 complexity0 大,那么我们可以按照任意顺序解锁这 n−1 台计算机,方案数为 n−1 个不同++物品的全排列个数++,即(n−1)!

复制代码
class Solution {
public:
    int countPermutations(vector<int>& complexity) {
        constexpr int MOD=1'000'000'007;
        long long ans=1;
        for(int i=1;i<complexity.size();i++){
            if(complexity[i]<=complexity[0]) return 0;
            ans=ans*i%MOD;
        }
        
        return ans;
    }
};
相关推荐
古城小栈11 小时前
为啥说:训练用BF16,推理用FP16
人工智能·算法·机器学习
KaMeidebaby11 小时前
卡梅德生物技术快报|蛋白 N 端测序在重组贻贝融合蛋白表征中的应用,解决原核表达序列偏移工艺难题
前端·人工智能·物联网·算法·百度
Turbo正则12 小时前
群论在AI中的应用概述
人工智能·算法·抽象代数
ysa05103012 小时前
【并查集】判环
c++·笔记·算法
Jerry12 小时前
KeetCode 44. 开发商购买土地
算法
Jerry12 小时前
KeetCode 58. 区间和
算法
Jerry13 小时前
LeetCode 209. 长度最小的子数组
算法
彦为君14 小时前
算法思维与经典智力题
java·前端·redis·算法
智能优化与强化学习14 小时前
Gym(Gymnasium)仿真环境详解(二):环境简介、入门算法、调参要点、核心挑战
算法·强化学习·gym·零基础入门·算法评估
mxwin14 小时前
Unity Shader exp 函数的算法与渲染应用
算法·unity·游戏引擎·shader