数学专题训练2 组合计数

news2024/11/23 15:37:55

1. 硬币购物

4 种面值的硬币,第 i 种的面值是 C i C_i Ci​。 n n n​ 次询问,每次询问给出每种硬币的数量 D i D_i Di​ 和一个价格 S S S​,问付款方式。 n ≤ 1 0 3 , S ≤ 1 0 5 n\leq 10^3,S\leq 10^5 n103,S105​.

如果用背包做的话复杂度是 O ( 4 n S ) O(4nS) O(4nS),无法承受。这道题最明显的特点就是硬币一共只有四种。抽象模型,其实就是让我们求方程 ∑ i = 1 4 C i x i = S , x i ≤ D i \sum_{i=1}^4C_ix_i=S,x_i\leq D_i i=14Cixi=S,xiDi 的非负整数解的个数。

采用同样的容斥方式, x i x_i xi 的属性为 x i ≤ D i x_i\leq D_i xiDi. 套用容斥原理的公式,最后我们要求解

∑ i = 1 4 C i x i = S − ∑ i = 1 k C a i ( D a i + 1 ) \sum_{i=1}^4C_ix_i=S-\sum_{i=1}^kC_{a_i}(D_{a_i}+1) i=14Cixi=Si=1kCai(Dai+1)

也就是无限背包问题。这个问题可以预处理,算上询问,总复杂度 O ( 4 S + 2 4 n ) O(4S+2^4n) O(4S+24n)

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
typedef long long ll;
ll f[N];
int T, c[5], d[5], s;
int main()
{
    for(int i = 0; i < 4; i++) scanf("%d", &c[i]);
    scanf("%d", &T);
    f[0] = 1;
    for(int i = 0; i < 4; i++)
    {
        for(int j = c[i]; j <= 100000; j++)
        {
            f[j] += f[j - c[i]];
        }
    }

    while(T--)
    {
        for(int i = 0; i < 4; i++) scanf("%d", &d[i]);
        scanf("%d", &s);
        ll res = 0;
        for(int i = 0; i < (1 << 4); i++)
        {
            int sum = 0, sign = 1;
            for(int j = 0; j < 4; j++)
            {
                if(i >> j & 1) sign *= -1, sum += c[j] * (d[j] + 1);
            }
            if(s - sum >= 0) res += sign * f[s - sum];
        }
        printf("%lld\n", res);
    }
}

2. 错位排列计数

对于 1 ∼ n 1\sim n 1n 的排列 P P P 如果满足 P i ≠ i P_i\neq i Pi=i,则称 P P P n n n 的错位排列。求 n n n 的错位排列数。

很简单,离散1也讲过,答案就是 n ! ∑ k = 0 n ( − 1 ) k k ! n!\sum\limits_{k=0}^{n}\frac{(-1)^k}{k!} n!k=0nk!(1)k

3. 完全图子图染色问题

A 和 B 喜欢对图(不一定连通)进行染色,而他们的规则是,相邻的结点必须染同一种颜色。今天 A 和 B 玩游戏,对于 n n n​ 阶 完全图 G = ( V , E ) G=(V,E) G=(V,E)​。他们定义一个估价函数 F ( S ) F(S) F(S)​,其中 S 是边集, S ⊆ E S\subseteq E SE​. F ( S ) F(S) F(S)​ 的值是对图 G ′ = ( V , S ) G'=(V,S) G=(V,S)​ 用 m m m​ 种颜色染色的总方案数。他们的另一个规则是,如果 ∣ S ∣ |S| S​ 是奇数,那么 A 的得分增加 F ( S ) F(S) F(S)​,否则 B 的得分增加 F ( S ) F(S) F(S)​. 问 A 和 B 的得分差值。

即求: ∑ S ⊆ E ( − 1 ) ∣ S ∣ − 1 F ( S ) \sum\limits_{S\subseteq E}(-1)^{|S|-1}F(S) SE(1)S1F(S)​,并且要求边集不能是空集.​

相邻结点染同一种颜色,我们把它当作属性。在这里我们先不遵守染色的规则,假定我们用 m 种颜色直接对图染色。对于图 G ′ = ( V , S ) G'=(V,S) G=(V,S),我们把它当作 元素属性 x i = x j x_i=x_j xi=xj 的含义是结点 i,j 染同色(注意,并未要求 i,j 之间有连边)。

而属性 x i = x j x_i=x_j xi=xj 对应的 集合 定义为 Q i , j Q_{i,j} Qi,j,其含义是所有满足该属性的图 G ′ G' G 的染色方案,集合的大小就是满足该属性的染色方案数,集合内的元素相当于所有满足该属性的图 G ′ G' G 的染色图。

回到题目,“相邻的结点必须染同一种颜色”,可以理解为若干个 Q Q Q 集合的交集。因此可以写出

F ( S ) = ∣ ⋂ ( i , j ) ∈ S Q i , j ∣ F(S)=\left|\bigcap_{(i,j)\in S}Q_{i,j}\right| F(S)= (i,j)SQi,j

上述式子右边的含义就是说对于 S 内的每一条边 ( i , j ) (i,j) (i,j) 都满足 x i = x j x_i=x_j xi=xj 的染色方案数,也就是 F ( S ) F(S) F(S).

是不是很有容斥的味道了?由于容斥原理本身没有二元组的形式,因此我们把 所有 的边 ( i , j ) (i,j) (i,j) 映射到 T = n ( n + 1 ) 2 T=\frac{n(n+1)}{2} T=2n(n+1) 个整数上,假设将 ( i , j ) (i,j) (i,j) 映射为 k , 1 ≤ k ≤ T k,1\leq k\leq T k,1kT,同时 Q i , j Q_{i,j} Qi,j 映射为 Q k Q_k Qk. 那么属性 x i = x j x_i=x_j xi=xj 则定义为 P k P_k Pk.

同时 S 可以表示为若干个 k 组成的集合,即 S ⇔ K = { k 1 , k 2 , ⋯   , k m } S\Leftrightarrow K=\{k_1,k_2,\cdots,k_m\} SK={k1,k2,,km}.(也就是说我们在边集与数集间建立了等价关系)。

而 E 对应集合 M = { 1 , 2 , ⋯   , n ( n + 1 ) 2 } M=\left\{1,2,\cdots,\frac{n(n+1)}{2}\right\} M={1,2,,2n(n+1)}. 于是乎

F ( S ) ⇔ F ( { k i } ) = ∣ ⋂ k i Q k i ∣ F(S)\Leftrightarrow F(\{ {k_i}\})=\left|\bigcap_{k_i}Q_{k_i}\right| F(S)F({ki})= kiQki

那么要求的式子展开

A n s = ∑ K ⊆ M ( − 1 ) ∣ K ∣ − 1 ∣ ⋂ k i ∈ K Q k i ∣ = ∑ i ∣ Q i ∣ − ∑ i < j ∣ Q i ∩ Q j ∣ + ∑ i < j < k ∣ Q i ∩ Q j ∩ Q k ∣ − ⋯ + ( − 1 ) T − 1 ∣ ⋂ i = 1 T Q i ∣ \begin{split} Ans &= \sum_{K\subseteq M}(-1)^{|K|-1}\left|\bigcap_{k_i\in K}Q_{k_i}\right|\\ &= \sum_{i}|Q_i|-\sum_{i<j}|Q_i\cap Q_j|+\sum_{i<j<k}|Q_i\cap Q_j\cap Q_k|-\cdots+(-1)^{T-1}\left|\bigcap_{i=1}^TQ_i\right| \end{split} Ans=KM(1)K1 kiKQki =iQii<jQiQj+i<j<kQiQjQk+(1)T1 i=1TQi

于是就出现了容斥原理的展开形式,因此对这个式子逆向推导

A n s = ∣ ⋃ i = 1 T Q i ∣ Ans=\left|\bigcup_{i=1}^TQ_i\right| Ans= i=1TQi

再考虑等式右边的含义,只要满足 1 ∼ T 1\sim T 1T 任一条件即可,也就是存在两个点同色(不一定相邻)的染色方案数!而我们知道染色方案的全集是 U U U,显然 ∣ U ∣ = m n |U|=m^n U=mn. 而转化为补集,就是求两两异色的染色方案数,即 A m n = m ! n ! A_m^n=\frac{m!}{n!} Amn=n!m!. 因此

A n s = m n − A m n Ans=m^n-A_m^n Ans=mnAmn

解决这道题,我们首先抽象出题目数学形式,然后从题目中信息量最大的条件, F ( S ) F(S) F(S) 函数的定义入手,将其转化为集合的交并补。然后将式子转化为容斥原理的形式,并 逆向推导 出最终的结果。这道题体现的正是容斥原理的逆用。

4. 容斥原理求最大公约数为 k k k 的数对个数

1 ≤ x , y ≤ N 1 \le x, y \le N 1x,yN f ( k ) f(k) f(k) 表示最大公约数为 k k k 的有序数对 ( x , y ) (x, y) (x,y) 的个数,求 f ( 1 ) f(1) f(1) f ( N ) f(N) f(N) 的值。

欧拉函数(找 g c d ( x k , y k ) = 1 gcd(\frac{x}{k},\frac{y}{k}) = 1 gcd(kx,ky)=1 的数量)和莫比乌斯反演都可以写,但是不如容斥原理来得简单。

由容斥原理可以得知,先找到所有以 k k k公约数 的数对,再从中剔除所有以 k k k 的倍数为 公约数 的数对,余下的数对就是以 k k k最大公约数 的数对。即 f ( k ) = f(k)= f(k)= k k k公约数 的数对个数 − - k k k 的倍数为 公约数 的数对个数。

进一步可发现,以 k k k 的倍数为 公约数 的数对个数等于所有以 k k k 的倍数为 最大公约数 的数对个数之和。于是,可以写出如下表达式:

f ( k ) = ⌊ ( N / k ) ⌋ 2 − ∑ i = 2 i ∗ k ≤ N f ( i ∗ k ) f(k)= \lfloor (N/k) \rfloor ^2 - \sum_{i=2}^{i*k \le N} f(i*k) f(k)=⌊(N/k)2i=2ikNf(ik)

由于当 k > N / 2 k>N/2 k>N/2 时,我们可以直接算出 f ( k ) = ⌊ ( N / k ) ⌋ 2 f(k)= \lfloor (N/k) \rfloor ^2 f(k)=⌊(N/k)2,因此我们可以倒过来,从 f ( N ) f(N) f(N) 算到 f ( 1 ) f(1) f(1) 就可以了。于是,我们使用容斥原理完成了本题。

for (long long k = N; k >= 1; k--) {
  f[k] = (N / k) * (N / k);
  for (long long i = k + k; i <= N; i += k) f[k] -= f[i];
}

上述方法的时间复杂度为 O ( ∑ i = 1 N N / i ) = O ( N ∑ i = 1 N 1 / i ) = O ( N log ⁡ N ) O( \sum_{i=1}^{N} N/i)=O(N \sum_{i=1}^{N} 1/i)=O(N \log N) O(i=1NN/i)=O(Ni=1N1/i)=O(NlogN)

附赠三倍经验供大家练手。

GCD SUM

给定 n ( n ≤ 1 0 5 ) n(n \le 10^5) n(n105),求 ∑ i = 1 n ∑ j = 1 n g c d ( i , j ) \sum\limits_{i = 1}^{n}\sum\limits_{j = 1}^{n}gcd(i,j) i=1nj=1ngcd(i,j).

我们可以用容斥原理求出 f ( i ) = ∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = k ] f(i) = \sum\limits_{i = 1}^{n}\sum\limits_{j = 1}^{n}[gcd(i,j)= k] f(i)=i=1nj=1n[gcd(i,j)=k]​​ 的值,然后答案就是 ∑ i = 1 n i ∗ f ( i ) \sum\limits_{i=1}^n i * f(i) i=1nif(i)​.

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
typedef long long ll;
ll f[N];
int main()
{
    int n;
    scanf("%d", &n);
    ll ans = 0;
    for(int i = n; i >= 1; i--)
    {
        f[i] = 1LL * (n / i) * (n / i);
        for(int j = 2 * i; j <= n; j += i) f[i] -= f[j];
        ans += 1LL * i * f[i];
    }
    printf("%lld\n", ans);
    return 0;
}

仪仗队

在这里插入图片描述

即计算 ∑ i = 1 n − 1 ∑ j = 1 n − 1 [ g c d ( i , j ) = 1 ] \sum\limits_{i=1}^{n - 1}\sum\limits_{j=1}^{n-1}[gcd(i,j)=1] i=1n1j=1n1[gcd(i,j)=1]​​,最后答案要加2. 注意特判 n = 1 n = 1 n=1​ 的情况.

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
typedef long long ll;
ll f[N];
int main()
{
    int n;
    scanf("%d", &n);
    n--;
    for(int i = n; i >= 1; i--)
    {
        f[i] = 1LL * (n / i) * (n / i);
        for(int j = 2 * i; j <= n; j += i) f[i] -= f[j];
    }
    if(!n) printf("0\n");
    else printf("%lld\n", f[1] + 2);
    return 0;
}

能量采集

给一个 n ∗ m n * m nm 的方格,设某格点与点 ( 0 , 0 ) (0,0) (0,0)​ 连线上的点数为 k k k​​,则该点的值为 2 k + 1 2k+1 2k+1,求所有格点的值之和。

我们可以用容斥原理求出 f ( i ) = ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = k ] f(i) = \sum\limits_{i = 1}^{n}\sum\limits_{j = 1}^{m}[gcd(i,j)= k] f(i)=i=1nj=1m[gcd(i,j)=k]​​ 的值,答案就是 ∑ i = 1 n ( 2 ∗ i − 1 ) ∗ f ( i ) \sum\limits_{i=1}^{n}(2*i-1) * f(i) i=1n(2i1)f(i).​​

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
typedef long long ll;
ll f[N];
int main()
{
    ll n, m;
    scanf("%lld%lld", &n, &m);
    ll ans = 0;
    for(ll i = min(n, m); i; i--)
    {
        f[i] = (n / i) * (m / i);
        for(int j = 2 * i; j <= min(n, m); j += i) f[i] -= f[j];
        ans += (2 * i - 1) * f[i];
    }
    printf("%lld\n", ans);
    return 0;
}

5. 容斥原理推导欧拉函数

考虑下面的问题:

求欧拉函数 φ ( n ) \varphi(n) φ(n)。其中 φ ( n ) = ∣ { 1 ≤ x ≤ n ∣ gcd ⁡ ( x , n ) = 1 } ∣ \varphi(n)=|\{1\leq x\leq n|\gcd(x,n)=1\}| φ(n)={1xngcd(x,n)=1}​​。

直接计算是 O ( n log ⁡ n ) O(n\log n) O(nlogn) 的,用线性筛是 O ( n ) O(n) O(n) 的,杜教筛是 O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32) 的(话说一道数论入门题用容斥做为什么还要扯到杜教筛上),接下来考虑用容斥推出欧拉函数的公式

判断两个数是否互质,首先分解质因数

n = ∏ i = 1 k p i c i n=\prod_{i=1}^k{p_i}^{c_i} n=i=1kpici

那么就要求对于任意 p i p_i pi x x x 都不是 p i p_i pi 的倍数,即 p i ∤ x p_i\nmid x pix. 把它当作属性,对应的集合为 S i S_i Si,因此有

φ ( n ) = ∣ ⋂ i = 1 k S i ∣ = ∣ U ∣ − ∣ ⋃ i = 1 k S i ‾ ∣ \varphi(n)=\left|\bigcap_{i=1}^kS_i\right|=|U|-\left|\bigcup_{i=1}^k\overline{S_i}\right| φ(n)= i=1kSi =U i=1kSi

全集大小 ∣ U ∣ = n |U|=n U=n,而 S i ‾ \overline{S_i} Si 表示的是 p i ∣ x p_i\mid x pix 构成的集合,显然 ∣ S i ‾ ∣ = n p i |\overline{S_i}|=\frac{n}{p_i} Si=pin,并由此推出

∣ ⋂ a i < a i + 1 S a i ∣ = n ∏ p a i \left|\bigcap_{a_i<a_{i+1}}S_{a_i}\right|=\frac{n}{\prod p_{a_i}} ai<ai+1Sai =pain

因此可得

φ ( n ) = n − ∑ i n p i + ∑ i < j n p i p j − ⋯ + ( − 1 ) k n p 1 p 2 ⋯ p n = n ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) ⋯ ( 1 − 1 p k ) = n ∏ i = 1 k ( 1 − 1 p i ) \begin{split} \varphi(n)=&n-\sum_{i}\frac{n}{p_i}+\sum_{i<j}\frac{n}{p_ip_j}-\cdots+(-1)^k\frac{n}{p_1p_2\cdots p_n}\\ =&n\left(1-\frac{1}{p_1}\right)\left(1-\frac{1}{p_2}\right)\cdots\left(1-\frac{1}{p_k}\right)\\ =&n\prod_{i=1}^k\left(1-\frac{1}{p_i}\right) \end{split} φ(n)===nipin+i<jpipjn+(1)kp1p2pnnn(1p11)(1p21)(1pk1)ni=1k(1pi1)

这就是欧拉函数的数学表示啦

6. D-Double Strings_2021牛客暑期多校训练营5 (nowcoder.com)

组合数学

7. C-Cheating and Stealing_2021牛客暑期多校训练营5 (nowcoder.com)

比较难

8. Necklace of Beads - HDU 6960 - Virtual Judge (vjudge.net)

置换

9. Puzzle loop - HDU 6952 - Virtual Judge (vjudge.net)

高斯消元

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一百零九天学习记录:C++实战:职工管理系统(黑马教学视频)

1、管理系统需求 代码进入一个 while 循环&#xff0c;不断从文件流 ifs 中读取数据。循环的条件是 ifs 从文件中读取 id、name 和 dId 三个值的操作都成功。如果读取成功&#xff0c;循环内部的代码块会执行一次&#xff0c; num 的值加一。 这段代码的作用是从文件中逐行读取…

ENSP路由器的基本命令操作(第十六课)

ENSP路由器的基本命令操作(第十六课) 1-1 代码重点回顾 1 ipconfig 查看 pc机的IP地址2 ping 连接的IP地址3 system-view 进入系统视图4 [Huawei]interface GigabitEthernet 0/0/1 进入接口视图 过0/0/15 quit 返回上一层视图6 ctrlZ 快速返回用户视图7 [sy]sysna…

【V8】【2. 内联函数、Slot】

什么是内联函数 在 V8 执行函数的过程中&#xff0c;会观察函数中一些调用点 (CallSite) 上的关键的中间数据&#xff0c;然后将这些数据缓存起来&#xff0c;当下次再次执行该函数的时候&#xff0c;V8 就可以直接利用这些中间数据&#xff0c;节省了再次获取这些数据的过程&…

PS图层混合模式超详细解答-图层混合模式的原理(Part2)

对比度组 叠加Overlay 此模式是正片叠底和滤色的组合&#xff0c;组合依据是底图的中性灰平面&#xff0c;如果在 [ 0 , 128 ] [0,128] [0,128]则使用正片叠底&#xff0c;若是在 ( 128 , 255 ] (128,255] (128,255]之间&#xff0c;则是实用滤色。 公式 r O v e r L a y (…

专项练习29

目录 一、选择题 1、如果修改obj里面的name属性时会发生什么&#xff1f; 2、以下代码执行后&#xff0c;a.x 和 b.x 的结果分别为&#xff08;&#xff09; 3、在ECMAScript6 中,Promise的状态有&#xff08;&#xff09; 4、下面哪些方式在同一个窗口下能够检测一个js对象是…

解决:eclipse无法查看源代码

eclipse的jdk没有配置对应的src&#xff0c;需要手动去添加jdk的源代码附件。 步骤如下&#xff1a; 1、找到以下路径&#xff1a;windows(窗口)–>Preferences(首选项)–>Java–>Installed JRES(已安装的JRE)&#xff0c;出现如下图所示的图片后&#xff0c;选中点…

15 - 信号处理设计模式

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. Linux应用程序安全性讨论1.1 问题1.2 不同场景1.2.1 场景一&#xff1a;不需要处理信号1.2.2 场景二&#xff1a;需要处理信号 2. 场景…

SQLmap使用指南(包含使用SQLmap获取shell)

文章标题 一&#xff1a;SQLmap基础知识二&#xff1a;SQLmap各大模块中的常用命令&#xff08;一&#xff09; 基础命令&#xff08;二&#xff09; target模块&#xff08;三&#xff09; Emuneration模块&#xff08;四&#xff09;其他命令 三&#xff1a;SQLmap应用示例&a…

数据结构_进阶(2):二叉树的OJ练习题

目录 1. 二叉树创建字符串。OJ链接 2. 二叉树的分层遍历1。OJ链接 3. 二叉树的分层遍历2。OJ链接 4. 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 。OJ链接 5. 二叉树搜索树转换成排序双向链表。OJ链接 6. 根据一棵树的前序遍历与中序遍历构造二叉树。 OJ链接…

2023年NOC决赛-加码未来编程赛项决赛模拟题-Python模拟题--卷4

第一题、计算 1+2+3+⋯+(n−1)+n 的值,其中正整数 n 不大于 100。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。 输入格式 输入一个正整数 n。 输出格式 输出一个正整数,表示最后求和的答案。 输入输出样例 输入 #1 100 输出 #1 5050 第二…

手撕自定义类型:结构体,枚举,联合——【C语言】

在开始学习之前我们先来欣赏一下五岳之一华山的风景&#xff0c;来营造一个好心情&#xff0c;只有一个好心情我们才能更好的学习 目录 结构体 1 结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.3 特殊的声明 1.4 结构的自引用 1.5 结构体变量的定义和初始化 1.6 …

Go语言之重要数组类型切片(slice)make,append函数

切片是一个动态数组&#xff0c;因为数组的长度是固定的&#xff0c;所以操作起来很不方便&#xff0c;比如一个names数组&#xff0c;我想增加一个学生姓名都没有办法&#xff0c;十分不灵活。所以在开发中数组并不常用&#xff0c;切片类型才是大量使用的。 切片基本操作 切片…

Linux系统文件编程及文件读、写操作

Linux 系统编程Day01 文章目录 Linux 系统编程Day011.文件编程概述1.1 文件的打开及创建1.1.1 参数说明1.1.2 文件写入操作示例1.1.3 文件的权限 2.文件操作2.1 写入文件2.2 文件读取操作2.3 文件的光标移动操作 3.文件操作原理简述3.1文件描述符3.2 Linux文件操作流程 1.文件编…

【数据结构】二叉树的前中后序遍历(C语言)

文章目录 什么是二叉树树相关的概念树的表示形式特殊的二叉树如何创造出一棵二叉树二叉树的遍历先序遍历(前序遍历)中序遍历后序遍历 总结 什么是二叉树 [二叉树] 顾名思义就是有两个分支节点的树&#xff0c;不仅如此&#xff0c;除了叶子外的所有节点都具有两个分支节点&…

单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真

单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真 下面介绍单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真,常见于二级压降仿真,以下图为例

备战秋招 | 笔试强训5

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、在上下文和头文件均正常情况下&#xff0c;以下程序的输出结果是&#xff08;&#xff09; int x 1; do {printf("%2d\n",x); }while(x--); A. 1 B. 无任何输出 C. 2 D. 陷入死循环 …

三种智能算法优化PID参数软件,MATLABAPP开发

今天的主题是&#xff1a;三种智能算法优化常见传递函数的PID参数&#xff0c;采用MATLAB APP Designer 开发。提供代码源程序&#xff0c;可以自行修改源代码&#xff08;不是封装软件&#xff09; 这个软件基本涵盖了所有的传递函数类型&#xff0c;传递函数的参数简单易改。…

【Java反射机制详解】—— 每天一点小知识

&#x1f4a7; J a v a 反射机制详解 \color{#FF1493}{Java反射机制详解} Java反射机制详解&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算法》专栏的文章…

pytest 参数化进阶

目录 前言&#xff1a; 语法 参数化误区 实践 简要回顾 前言&#xff1a; pytest是一个功能强大的Python测试框架&#xff0c;它提供了参数化功能&#xff0c;可以帮助简化测试用例的编写和管理。 语法 本文就赶紧聊一聊 pytest 的参数化是怎么玩的。 pytest.mark.par…

week27

这周是磨难的一周不知道NT装了多少次系统&#xff0c;删除了多少数据好消息是把BIOS和ubuntu安装地很熟练了&#xff0c;而且经过爱上了心仪的Ubuntu23.04&#xff0c;就是她了坏消息是一个学期做的笔记全都没了&#xff0c;以后不好回忆了&#xff0c;好消息是不用考试了&…