当前位置: 首页 > article >正文

信息学奥赛一本通 1607:【 例 2】任务安排 2 | 洛谷 P10979 任务安排 2

【题目链接】

ybt 1607:【 例 2】任务安排 2
洛谷 P10979 任务安排 2
注:ybt1607中n最大达到 1 0 4 10^4 104,洛谷P10979中n最大达到 3 ∗ 1 0 5 3*10^5 3105,本题解统一认为n最大达到 3 ∗ 1 0 5 3*10^5 3105

【题目考点】

1. 动态规划:斜率优化动规
2. 单调队列

数组实现单调队列代码操作:

操作代码
单调队列初始化int q[N], l = 1, r = 0
单调队列是否为空l > r(队列不空:l <= r
取队头q[l]
取队尾q[r]
队尾入队q[++r] = a
队头出队++l
队尾出队--r

【解题思路】

与本题题面相同但问题规模较小的题目:
信息学奥赛一本通 1606:【 例 1】任务安排 1 | 洛谷 P2365 任务安排
本题相比上题只有n的数值范围扩大到了 3 ∗ 1 0 5 3*10^5 3105,因此理论上不能再使用 O ( n 2 ) O(n^2) O(n2)的算法,应该使用 O ( n l o g n ) O(nlogn) O(nlogn) O ( n ) O(n) O(n)的算法。状态定义和状态转移方程分析过程见上题中的解法2。
以下介绍的就是动态规划的斜率优化算法:

1. 整理状态转移方程

状态定义 d p i dp_i dpi:前i个任务的所有子段划分方案中,执行任务的费用 加上当前方案下每批任务的启动时间对后续任务产生的费用 加和最小的任务批次划分方案的费用。
第i个任务执行时间为 t i t_i ti,其前缀和为 T T T。第i个任务的费用系数为为 c i c_i ci,其前缀和为 C C C
状态转移方程 d p i = m i n { d p j + T i ⋅ ( C i − C j ) + s ⋅ ( C n − C j ) } , 0 ≤ j < i dp_i = min\{dp_j+T_i\cdot (C_i-C_j)+s\cdot (C_n-C_j)\}, 0\le j< i dpi=min{dpj+Ti(CiCj)+s(CnCj)},0j<i
将与j有关以及无关的项分开写,得到:
d p i = m i n { d p j − ( T i + s ) ⋅ C j + T i ⋅ C i + s ⋅ C n } , 0 ≤ j < i dp_i = min\{dp_j-(T_i+s)\cdot C_j+T_i\cdot C_i+s\cdot C_n\}, 0\le j<i dpi=min{dpj(Ti+s)Cj+TiCi+sCn},0j<i

2. 决策点

每个j的取值称为一个决策点。假设 d p j 1 < d p j 2 dp_{j_1}<dp_{j_2} dpj1<dpj2,也就是决策点 j 1 j_1 j1优于 j 2 j_2 j2
d p j 1 − ( T i + s ) ⋅ C j 1 + T i ⋅ C i + s ⋅ C n < d p j 2 − ( T i + s ) ⋅ C j 2 + T i ⋅ C i + s ⋅ C n dp_{j_1}-(T_i+s)\cdot C_{j_1}+T_i\cdot C_i+s\cdot C_n < dp_{j_2}-(T_i+s)\cdot C_{j_2}+T_i\cdot C_i+s\cdot C_n dpj1(Ti+s)Cj1+TiCi+sCn<dpj2(Ti+s)Cj2+TiCi+sCn
d p j 1 − ( T i + s ) ⋅ C j 1 < d p j 2 − ( T i + s ) ⋅ C j 2 dp_{j_1}-(T_i+s)\cdot C_{j_1}< dp_{j_2}-(T_i+s)\cdot C_{j_2} dpj1(Ti+s)Cj1<dpj2(Ti+s)Cj2
( T i + s ) ⋅ ( C j 2 − C j 1 ) < d p j 2 − d p j 1 (T_i+s)\cdot (C_{j_2}-C_{j_1})< dp_{j_2}-dp_{j_1} (Ti+s)(Cj2Cj1)<dpj2dpj1
如果已知 C j 1 < C j 2 C_{j_1}<C_{j_2} Cj1<Cj2,那么 d p j 2 − d p j 1 C j 2 − C j 1 > T i + s \frac{dp_{j_2}-dp_{j_1}}{C_{j_2}-C_{j_1}} > T_i+s Cj2Cj1dpj2dpj1>Ti+s
反过来,已知 C j 1 < C j 2 C_{j_1}<C_{j_2} Cj1<Cj2
如果 d p j 2 − d p j 1 C j 2 − C j 1 > T i + s \frac{dp_{j_2}-dp_{j_1}}{C_{j_2}-C_{j_1}} > T_i+s Cj2Cj1dpj2dpj1>Ti+s,那么决策点 j 1 j_1 j1优于 j 2 j_2 j2
如果 d p j 2 − d p j 1 C j 2 − C j 1 < T i + s \frac{dp_{j_2}-dp_{j_1}}{C_{j_2}-C_{j_1}} < T_i+s Cj2Cj1dpj2dpj1<Ti+s,那么决策点 j 2 j_2 j2优于 j 1 j_1 j1

3. 决策点的几何表示

对于每个j,都能得到一组数对 ( C j , d p j ) (C_j, dp_j) (Cj,dpj),将这组数对看作平面直角坐标系中的一个点,称为第j点 ( x j , y j ) (x_j,y_j) (xj,yj),其横纵坐标分别为 x j = C j , y j = d p j x_j=C_j,y_j=dp_j xj=Cjyj=dpj
那么 k ( j 1 , j 2 ) = y j 2 − y j 1 x j 2 − x j 1 = d p j 2 − d p j 1 C j 2 − C j 1 k(j_1,j_2)=\frac{y_{j_2}-y_{j_1}}{x_{j_2}-x_{j_1}}=\frac{dp_{j_2}-dp_{j_1}}{C_{j_2}-C_{j_1}} k(j1,j2)=xj2xj1yj2yj1=Cj2Cj1dpj2dpj1就是第 j 1 j_1 j1点和第 j 2 j_2 j2点连线的斜率。
在这里插入图片描述

4. 转为线性规划问题

将状态转移方程
d p i = m i n { d p j − ( T i + s ) ⋅ C j + T i ⋅ C i + s ⋅ C n } , 0 ≤ j < i dp_i = min\{dp_j-(T_i+s)\cdot C_j+T_i\cdot C_i+s\cdot C_n\}, 0\le j<i dpi=min{dpj(Ti+s)Cj+TiCi+sCn},0j<i
去掉min, C j C_j Cj替换为 x x x d p j dp_j dpj替换为y,得到:
d p i = y − ( T i + s ) x + T i ⋅ C i + s ⋅ C n dp_i=y-(T_i+s)x+T_i\cdot C_i+s\cdot C_n dpi=y(Ti+s)x+TiCi+sCn
移项得: y = ( T i + s ) x + d p i − T i ⋅ C i − s ⋅ C n y=(T_i+s)x+dp_i-T_i\cdot C_i-s\cdot C_n y=(Ti+s)x+dpiTiCisCn
这是一条斜率为 T i + s T_i+s Ti+s,截距为 d p i − T i ⋅ C i − s ⋅ C n dp_i-T_i\cdot C_i-s\cdot C_n dpiTiCisCn的直线。
直线斜率 K = T i + s K=T_i+s K=Ti+s,截距 B = d p i − T i ⋅ C i − s ⋅ C n B=dp_i-T_i\cdot C_i-s\cdot C_n B=dpiTiCisCn,该直线可以表示为 y = K x + B y=Kx+B y=Kx+B
显然,该直线的斜率是固定的,截距中只有 d p i dp_i dpi是可以变化的,也就是说 B B B越小 d p i dp_i dpi越小。
原状态转移方程要完成的事是:在 0 ≤ j < i 0\le j<i 0j<i范围内选择一个j使得 d p i dp_i dpi的值最小。
该问题等价于在 0 ≤ j < i 0\le j<i 0j<i范围内选择一个决策点j,使得斜率固定的直线 y = K x + B y=Kx+B y=Kx+B在经过点 ( C j , d p j ) (C_j, dp_j) (Cj,dpj)时,截距B最小。
使截距B最小的决策点j,也就是使 d p i dp_i dpi最小的j,称为最优决策点
在这里插入图片描述

5. 决策点的比较条件

决策点比较条件可以写为:
已知 C j 1 < C j 2 C_{j_1}<C_{j_2} Cj1<Cj2

  • 如果 k ( j 1 , j 2 ) > K k(j_1,j_2) > K k(j1,j2)>K,那么决策点 j 1 j_1 j1优于 j 2 j_2 j2,也就是两点连线斜率大于直线斜率,左侧点更优。
  • 如果 k ( j 1 , j 2 ) < K k(j_1,j_2) < K k(j1,j2)<K,那么决策点 j 2 j_2 j2优于 j 1 j_1 j1,也就是两点连线斜率小于直线斜率,右侧点更优。


图示:

k ( j 1 , j 2 ) < K k(j_1,j_2) < K k(j1,j2)<K,所以 j 2 j_2 j2优于 j 1 j_1 j1
k ( j 2 , j 3 ) > K k(j_2,j_3) > K k(j2,j3)>K,所以 j 2 j_2 j2优于 j 3 j_3 j3

6. 上凸点与下凸点

已知有 j 1 , j 2 , j 3 j_1,j_2,j_3 j1,j2,j3三个点满足 C j 1 < C j 2 < C j 3 C_{j_1}<C_{j_2}<C_{j_3} Cj1<Cj2<Cj3

  • 如果 k ( j 1 , j 2 ) < k ( j 2 , j 3 ) k(j_1,j_2)<k(j_2,j_3) k(j1,j2)<k(j2,j3),称 j 2 j_2 j2下凸点
  • 如果 k ( j 1 , j 2 ) > k ( j 2 , j 3 ) k(j_1,j_2)>k(j_2,j_3) k(j1,j2)>k(j2,j3),称 j 2 j_2 j2上凸点
    在选最优决策点时可以忽略上凸点

证明:假设 j 2 j_2 j2 j 1 , j 2 , j 3 j_1,j_2,j_3 j1,j2,j3三个点中的上凸点,
如果 k ( j 1 , j 2 ) > K k(j_1,j_2)>K k(j1,j2)>K,则决策点 j 1 j_1 j1优于 j 2 j_2 j2
如果 K > k ( j 1 , j 2 ) > k ( j 2 , j 3 ) K>k(j_1,j_2)>k(j_2,j_3) K>k(j1,j2)>k(j2,j3),那么决策点 j 3 j_3 j3优于 j 2 j_2 j2
如果 K = k ( j 1 , j 2 ) K=k(j_1,j_2) K=k(j1,j2),那么选 j 1 j_1 j1和选 j 2 j_2 j2是一样的,可以不选 j 2 j_2 j2

在这里插入图片描述
图示:
k ( j 1 , j 2 ) < k ( j 2 , j 3 ) k(j_1,j_2)<k(j_2,j_3) k(j1,j2)<k(j2,j3) j 2 j_2 j2为下凸点, j 2 j_2 j2可能是最优决策点。
k ( j 1 , j 4 ) > k ( j 4 , j 3 ) k(j_1,j_4)>k(j_4,j_3) k(j1,j4)>k(j4,j3) j 4 j_4 j4为上凸点, j 4 j_4 j4不可能是最优决策点。

7. 下凸壳

决策点的点集中,只有下凸点有可能作为最优决策点,因此我们只需要维护所有下凸点构成的下凸壳。
下凸壳上的点按 C j C_j Cj从小到大记为 q l , q l + 1 , . . . , q r q_l,q_{l+1},...,q_r ql,ql+1,...,qr
在这里插入图片描述
由于所有决策点都是下凸点,
所以 k ( q l , q l + 1 ) < k ( q l + 1 , q l + 2 ) < . . . < k ( q r − 1 , q r ) k(q_l,q_{l+1})<k(q_{l+1},q_{l+2})<...<k(q_{r−1},q_r) k(ql,ql+1)<k(ql+1,ql+2)<...<k(qr1,qr)
相邻点连成的线段的斜率是单调递增的。因此使用单调队列维护下凸壳。

8. 决策点队头出队

随着队列q下标x增大,决策点编号 j = q x j=q_x j=qx单调递增, C j C_j Cj也单调递增
本题中直线斜率 K = T i + s K=T_i+s K=Ti+s随着i的增大是单调递增的。
因此如果当前选择决策点 j j j,对于横坐标小于 C j C_j Cj的决策点,也就是队列中 j j j前面的决策点都不可能再成为最优决策点,因此不需要再维护了。
具体做法为:
不断比较 k ( q l , q l + 1 ) k(q_l,q_{l+1}) k(ql,ql+1) K K K的大小

  • 只要 k ( q l , q l + 1 ) ≤ K k(q_l,q_{l+1})≤K k(ql,ql+1)K,则队头 q l q_l ql出队
  • 直到队列里只有一个点或 k ( q l , q l + 1 ) > K k(q_l,q_{l+1})>K k(ql,ql+1)>K,此时 q l q_l ql为最优决策点。

将最优决策点 q l q_l ql带入状态转移方程,得出新的状态 d p i dp_i dpi,以及新的决策点i。
在这里插入图片描述
图示:
k ( q 1 , q 2 ) ≤ K k(q_1,q_2)≤K k(q1,q2)K,则队头 q 1 q_1 q1出队;
k ( q 2 , q 3 ) ≤ K k(q_2,q_3)≤K k(q2,q3)K,则队头 q 2 q_2 q2出队;
k ( q 3 , q 4 ) > K k(q_3,q_4)>K k(q3,q4)>K,队头 q 3 q_3 q3是最优决策点。

9. 决策点队尾入队

求出状态 d p i dp_i dpi后,就得到一个新的决策点第 i i i点,其坐标为 ( C i , d p i ) (C_i,dp_i) (Ci,dpi)。我们需要将该点加入决策点集。
由于 C i C_i Ci随着i的增大单调递增,因此新的决策点 i i i一定在下凸壳最后一个决策点 q r q_r qr的右侧。
如果新增第 i i i点导致下凸壳上最后一个决策点 q r q_r qr变为上凸点,则将 q r q_r qr点去掉,直到不产生上凸点时,将第i点加入决策点集的下凸壳。
具体做法:
不断比较 k ( q r , i ) k(q_r,i) k(qr,i) k ( q r − 1 , q r ) k(q_{r−1},q_r) k(qr1,qr)的大小

  • 只要 k ( q r − 1 , q r ) ≥ k ( q r , i ) k(q_{r−1},q_r)≥k(q_r,i) k(qr1,qr)k(qr,i),则将队尾 q r q_r qr出队
  • 直到队列中只有一个点或 k ( q r − 1 , q r ) k(q_{r−1},q_r) k(qr1,qr)< k ( q r , i ) k(q_r,i) k(qr,i),此时将 i i i队尾入队。
    在这里插入图片描述
    图示:
    k ( q 3 , q 4 ) ≥ k ( q 4 , i ) k(q_3,q_4)≥k(q_4,i) k(q3,q4)k(q4,i),则将队尾 q 4 q_4 q4出队。
    k ( q 2 , q 3 ) < k ( q 3 , i ) k(q_2,q_3)<k(q_3,i) k(q2,q3)<k(q3,i),则将i队尾入队。
10. 十字相乘

在具体计算时,应避免使用实数除法导致精度丢失,应该使用十字相乘法,在整数域内进行计算和比较。

  • 判断 k ( q l , q l + 1 ) ≤ K k(q_l,q_{l+1})≤K k(ql,ql+1)K,即判断 d p q l + 1 − d p q l C q l + 1 − C q l ≤ T i + s \dfrac{dp_{q_{l+1}}−dp_{q_l}}{C_{q_{l+1}}−C_{q_l}}≤T_i+s Cql+1Cqldpql+1dpqlTi+s
    等价于判断 d p q l + 1 − d p q l ≤ ( T i + s ) ( C q l + 1 − C q l ) dp_{q_{l+1}}−dp_{q_l}\le (T_i+s)(C_{q_{l+1}}-C_{q_l}) dpql+1dpql(Ti+s)(Cql+1Cql)
  • 判断 k ( q r − 1 , q r ) ≥ k ( q r , i ) k(q_{r−1},q_r)≥k(q_r,i) k(qr1,qr)k(qr,i),即判断 d p i − d p q r C i − C q r ≤ d p q r − d p q r − 1 C q r − C q r − 1 \dfrac{dp_i−dp_{q_r}}{C_i−C_{q_r}}≤\dfrac{dp_{q_r}−dp_{q_{r−1}}}{C_{q_r}−C_{q_{r−1}}} CiCqrdpidpqrCqrCqr1dpqrdpqr1
    等价于判断 ( d p i − d p q r ) ( C q r − C q r − 1 ) ≤ ( d p q r − d p q r − 1 ) ( C i − C q r ) (dp_i−dp_{q_r})(C_{q_r}−C_{q_{r−1}})\le (dp_{q_r}−dp_{q_{r−1}})(C_i−C_{q_r}) (dpidpqr)(CqrCqr1)(dpqrdpqr1)(CiCqr)
11. 其它

初始时已知 d p 0 = 0 dp_0 = 0 dp0=0,应该先把第0点加入单调队列
最终结果是 d p n dp_n dpn
单调队列判断队列是否为空:l > r,判断队列不空:l <= r,判断队列中元素个数是否大于1个l < r
注意dp数组要设为long long类型。
本问题经过斜率优化后,算法时间复杂度为 O ( n ) O(n) O(n)

【题解代码】

解法1:斜率优化动规 O ( n ) O(n) O(n)

#include<bits/stdc++.h>
using namespace std;
#define N 300005
long long n, s, t[N], c[N], T[N], C[N], dp[N];//dp[i]:前i个任务的所有子段划分方案中,执行任务的费用 加上当前方案下每批任务的启动时间对后续任务产生的费用加和 最小的划分方案的费用
int q[N], l = 1, r = 0;//单调队列 
int main()
{cin >> n >> s;for(int i = 1; i <= n; ++i){cin >> t[i] >> c[i];T[i] = T[i-1]+t[i];//T:t的前缀和C[i] = C[i-1]+c[i];//C:c的前缀和}q[++r] = 0;//已知dp[0] = 0,加入第0点:(C[0],dp[0]) for(int i = 1; i <= n; ++i){while(l < r && dp[q[l+1]]-dp[q[l]] <= (T[i]+s)*(C[q[l+1]]-C[q[l]]))++l;dp[i] = dp[q[l]]-(T[i]+s)*C[q[l]]+T[i]*C[i]+s*C[n];while(l < r && (dp[i]-dp[q[r]])*(C[q[r]]-C[q[r-1]]) <= (C[i]-C[q[r]])*(dp[q[r]]-dp[q[r-1]]))--r;q[++r] = i;}cout << dp[n];return 0;
}

相关文章:

信息学奥赛一本通 1607:【 例 2】任务安排 2 | 洛谷 P10979 任务安排 2

【题目链接】 ybt 1607&#xff1a;【 例 2】任务安排 2 洛谷 P10979 任务安排 2 注&#xff1a;ybt1607中n最大达到 1 0 4 10^4 104&#xff0c;洛谷P10979中n最大达到 3 ∗ 1 0 5 3*10^5 3∗105&#xff0c;本题解统一认为n最大达到 3 ∗ 1 0 5 3*10^5 3∗105。 【题目考点…...

AI(计算机视觉)自学路线

本文仅用来记录一下自学路线方便日后复习&#xff0c;如果对你自学有帮助的话也很开心o(*&#xffe3;▽&#xffe3;*)ブ B站吴恩达机器学习->B站小土堆pytorch基础学习->opencv相关知识&#xff08;Halcon或者opencv库&#xff09;->四类神经网络&#xff08;这里跟…...

OFDM系统仿真

1️⃣ OFDM的原理 1.1 介绍 OFDM是一种多载波调制技术&#xff0c;将输入数据分配到多个子载波上&#xff0c;每个子载波上可以独立使用 QAM、PSK 等传统调制技术进行调制。这些子载波之间互相正交&#xff0c;从而可以有效利用频谱并减少干扰。 1.2 OFDM的核心 多载波调制…...

torch numpy seed使用方法

1 import numpy as np np.random.seed(500) np.random.rand(5)array([0.69367953, 0.06171699, 0.6666116 , 0.55920894, 0.08511062])import torch torch.manual_seed(500) torch.rand(5)为了能够复现数据&#xff0c;我们可以使用seed 来控制生成的随机数。设置seed数据来设…...

【Go语言圣经】第四节:复合数据类型

第四章&#xff1a;复合数据类型 本节主要讨论四种类型——数组、slice、map和结构体。 数组和结构体都是有固定内存大小的数据结构。相比之下&#xff0c;slice 和 map 则是动态的数据结构&#xff0c;它们可以根据需要动态增长。 4.1 数组 数组是一个定长的由特定类型元素…...

【Vite + Vue + Ts 项目三个 tsconfig 文件】

Vite Vue Ts 项目三个 tsconfig 文件 为什么 Vite Vue Ts 项目会有三个 tsconfig 文件&#xff1f;首先我们先了解什么是 tsconfig.json ? 为什么 Vite Vue Ts 项目会有三个 tsconfig 文件&#xff1f; 在使用 Vite 创建 vue-ts 模板的项目时&#xff0c;会发现除了 ts…...

论文和代码解读:RF-Inversion 图像/视频编辑技术

Diffusion Models专栏文章汇总:入门与实战 前言:Rectified Flow的反演和DDIM这些不太一样,上一篇博客中介绍了腾讯提出的一种方法《基于Rectified Flow FLUX的图像编辑方法 RF-Solver》,主要就是用泰勒展开和一阶导数近似来分解反演公式。这篇博客介绍谷歌提出的方法RF-Inv…...

完美还是完成?把握好度,辨证看待

完美还是完成&#xff1f; 如果说之前这个答案有争议&#xff0c;那么现在&#xff0c;答案毋庸置疑 ■为什么完美大于完成 ●时间成本&#xff1a; 做事不仅要考虑结果&#xff0c;还要考虑时间和精力&#xff0c;要说十年磨一剑的确质量更好&#xff0c;但是现实没有那么多…...

Many Whelps! Handle It! (10 player) Many Whelps! Handle It! (25 player)

http://db.nfuwow.com/80/?achievement4403 http://db.nfuwow.com/80/?achievement4406 最少扣你50DKP! 第二阶段 当奥妮克希亚升空后&#xff0c;在10秒内引出50只奥妮克希亚雏龙&#xff0c;随后击败奥妮克希亚。 World of Warcraft [CLASSIC][80猎人][Grandel][最少扣你5…...

3.4 Go函数作用域(标识符)

只有精准分析每个标识符的作用域范围&#xff0c;才能编写出优质、健壮的代码&#xff0c;避免逻辑错误的发生。 作用域标识符 简单来说&#xff0c;作用域指的是标识符可以起作用的范围&#xff0c;即其可见范围。将标识符的可见性限制在一定范围内&#xff0c;这个范围就是…...

【React】PureComponent 和 Component 的区别

前言 在 React 中&#xff0c;PureComponent 和 Component 都是用于创建组件的基类&#xff0c;但它们有一个主要的区别&#xff1a;PureComponent 会给类组件默认加一个shouldComponentUpdate周期函数。在此周期函数中&#xff0c;它对props 和 state (新老的属性/状态)会做一…...

MongoDb user自定义 role 添加 action(collStats, EstimateDocumentCount)

使用 mongosh cd mongsh_bin_path mongosh “mongodb://user:passip:port/db”这样就直接进入了对应的db 直接输入&#xff1a; 这样 role “read_only_role" 就获得了3个 action&#xff0c; 分别是 查询&#xff0c;列举集合&#xff0c;集合元数据查询 P.S: 如果没有 …...

fastadmin中require-form.js的data-favisible控制显示隐藏

只要在任意元素上添加data-favisible属性就可以轻松的控制显示隐藏了 其中reportype是php传到前端的一个变量??? <div class"form-group" data-favisible"reportype6"><label class"control-label col-xs-12 col-sm-2">{:__(Ove_…...

Day51:type()函数

在 Python 中&#xff0c;type() 是一个内置函数&#xff0c;用于返回对象的类型。它可以用于检查变量的类型&#xff0c;也可以用于动态创建新的类型。今天&#xff0c;我们将深入了解 type() 函数的使用方法。 1. 使用 type() 获取变量的类型 最常见的使用方式是将一个对象…...

vue 无法 局域网内访问

资料 Vue项目设置可以局域网访问_vue.js_脚本之家 过程 上午&#xff0c;前端vue服务能够在局域网内访问&#xff0c; 下午就不行了&#xff0c;但是后端服务能够正常访问&#xff0c;本机也能正常访问ip&#xff1a;端口号 前端服务 判定不是下面的问题&#xff1a; 同一…...

【llm对话系统】大模型 Llama 源码分析之 LoRA 微调

1. 引言 微调 (Fine-tuning) 是将预训练大模型 (LLM) 应用于下游任务的常用方法。然而&#xff0c;直接微调大模型的所有参数通常需要大量的计算资源和内存。LoRA (Low-Rank Adaptation) 是一种高效的微调方法&#xff0c;它通过引入少量可训练参数&#xff0c;固定预训练模型…...

蓝桥杯刷题DAY2:二维前缀和 一维前缀和 差分数组

闪耀的灯光 &#x1f4cc; 题目描述 蓝桥公园是一个适合夜间散步的好地方&#xff0c;公园可以被视为由 n m 个矩形区域构成。每个区域都有一盏灯&#xff0c;初始亮度为 a[i][j]。 小蓝可以选择一个大的矩形区域&#xff0c;并按下开关一次&#xff0c;这将使得该区域内每盏…...

网件r7000刷回原厂固件合集测评

《网件R7000路由器刷回原厂固件详解》 网件R7000是一款备受赞誉的高性能无线路由器&#xff0c;其强大的性能和可定制性吸引了许多高级用户。然而&#xff0c;有时候用户可能会尝试第三方固件以提升功能或优化网络性能&#xff0c;但这也可能导致一些问题&#xff0c;如系统不…...

算法随笔_35: 每日温度

上一篇:算法随笔_34: 最后一个单词的长度-CSDN博客 题目描述如下: 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升…...

C++初阶 -- 手撕string类(模拟实现string类)

目录 一、string类的成员变量 二、构造函数 2.1 无参版本 2.2 有参版本 2.3 缺省值版本 三、析构函数 四、拷贝构造函数 五、c_str函数 六、operator重载 七、size函数 八、迭代器iterator 8.1 正常版本 8.2 const版本 九、operator[] 9.1 正常版本 9.2 const版…...

【Unity3D】实现2D角色/怪物死亡消散粒子效果

核心&#xff1a;这是一个Unity粒子系统自带的一种功能&#xff0c;可将粒子生成控制在一个Texture图片网格范围内&#xff0c;并且粒子颜色会自动采样图片的像素点颜色&#xff0c;之后则是粒子编辑出消散效果。 Particle System1物体&#xff08;爆发式随机速度扩散10000个粒…...

构建一个数据分析Agent:提升分析效率的实践

在上一篇文章中,我们讨论了如何构建一个智能客服Agent。今天,我想分享另一个实际项目:如何构建一个数据分析Agent。这个项目源于我们一个金融客户的真实需求 - 提升数据分析效率,加快决策速度。 从分析师的痛点说起 记得和分析师团队交流时的场景&#xff1a; 小张&#xff…...

85.[1] 攻防世界 WEB easyphp

进入靶场 属于代码审计 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;常用于调试或展示代码 highlight_file(__FILE__);// 初始化两个标志变量&#xff0c;用于后续条件判断 $key1 0; $key2 0;// 从 GET 请求中获取参数 a 和 b $a $_GET[a]; $b $_GET[b];// 检…...

嵌入式硬件篇---CPUGPUTPU

文章目录 第一部分&#xff1a;处理器CPU&#xff08;中央处理器&#xff09;1.通用性2.核心数3.缓存4.指令集5.功耗和发热 GPU&#xff08;图形处理器&#xff09;1.并行处理2.核心数量3.内存带宽4.专门的应用 TPU&#xff08;张量处理单元&#xff09;1.为深度学习定制2.低精…...

pytorch图神经网络处理图结构数据

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 图神经网络&#xff08;Graph Neural Networks&#xff0c;GNNs&#xff09;是一类能够处理图结构数据的深度学习模型。图结构数据由节点&#xff08;vertices&#xff09;和边&#xff08;edges&#xff09;组成&a…...

海外问卷调查,最常用到的渠道查有什么特殊之处

市场调研&#xff0c;包含市场调查和市场研究两个步骤&#xff0c;是企业和机构根据经营方向而做出的决策问题&#xff0c;最终通过海外问卷调查中的渠道查&#xff0c;来系统地设计、收集、记录、整理、分析、研究市场反馈的工作流程。 市场调研的工作流程包括&#xff1a;确…...

【Uniapp-Vue3】解决uni-popup弹窗在安全区显示透明问题

我们在使用uni-popup时&#xff0c;如果想要给弹出内容添加一个背景颜色&#xff0c;我们会发现在安全区域是不显示该背景颜色的。 首先根据如下的目录结构找到uni-popup.vue文件 在该文件中找到bottom配置&#xff0c;将红箭头所指代码注释掉 下面的安全区域就没有了&#xff…...

什么是麦克斯韦方程

飞书链接&#xff0c;格式更好&#xff0c;⭐⭐⭐&#xff1a;长尾 - 什么是麦克斯韦方程 基于作者的内容&#xff0c;做了一些扩展&#xff08;问了 DeepSeek&#xff09; 最美的公式&#xff1a;你也能懂的麦克斯韦方程组&#xff08;积分篇&#xff09; 04通量的引入 用一个…...

webrtc peerconnection_client peerconnection_server 连接失败问题解决 win10 win11

0 常见问题 (1) webrtc peerconnection_client 连接 peerconnection_server 无连接列表 &#xff08;2&#xff09;连接导致崩溃debug状态下因为这个断言 RTC_DCHECK_RUN_ON(&capture_checker_); 1 在 peerconnection\client\main.cc 当中 定义类 class CustomSock…...

项目练习:重写若依后端报错cannot be cast to com.xxx.model.LoginUser

文章目录 一、情景说明二、解决办法 一、情景说明 在重写若依后端服务的过程中 使用了Redis存放LoginUser对象数据 那么&#xff0c;有存就有取 在取值的时候&#xff0c;报错 二、解决办法 方法1、在TokenService中修改如下 getLoginUser 方法中&#xff1a;LoginUser u…...