Codeforces Hello 2024 A~F1

A.Wallet Exchange(思维)

题意:

AliceBob各自拥有 a , b a,b a,b枚硬币,他们决定以Alice为先手开始比赛,比赛中每人在每轮需按顺序执行操作1和操作2:

  • 操作1:交换两人手上拥有的硬币数量,或什么都不做

  • 操作2:丢掉手上的一枚硬币(如果此时手上没有硬币则输掉比赛)

问:假设两人都极为聪明,那么谁会赢下这场比赛?

分析:

实际上对于操作1,比赛两方均会选择硬币较多的一堆,因此,可以将硬币视为只有一堆,共 n n n枚,其中 n = a + b n = a + b n=a+bAliceBob按顺序从这堆硬币中丢弃硬币。

此时若硬币数量 n n n为偶数时,必然是后手丢掉最后一枚硬币,即Bob获胜,反之,先手Alice获胜。

代码:

#include<bits/stdc++.h>using namespace std;void solve() {int a, b;cin >> a >> b;if ((a + b) % 2 == 0) {cout << "Bob" << endl;} else {cout << "Alice" << endl;}
}int main() {int Case;cin >> Case;while (Case--) {solve();}return 0;
}

B.Plus-Minus Split(贪心)

题意:

给出一个包含 n n n个字符的字符串 s s s,字符串中仅包含字符-+,其中-代表 − 1 -1 1+代表 1 1 1

你可以进行以下步骤来计算罚分:

  1. 将字符串 s s s分为若干子子串 b 1 , b 2 , . . . , b k b_1, b_2, ..., b_k b1,b2,...,bk

  2. 对于字符串 c c c产生的罚分为 p ( c ) = ∣ c 1 + c 2 + . . . + c m ∣ ⋅ m p(c) = |c_1 + c_2 + ... + c_m| \cdot m p(c)=c1+c2+...+cmm

  3. 产生的总罚分为 p ( s ) = p ( b 1 ) + p ( b 2 ) + . . . + p ( b k ) p(s) = p(b_1) + p(b_2) + ... + p(b_k) p(s)=p(b1)+p(b2)+...+p(bk)

问:最小可能的罚分是多少?

分析:

为了最小化罚分,需要尽可能多的将正负号进行匹配,即若干子拆出的子串中正负号出现次数相同,但字符串中正负号数量并不一定相同,那么剩下的正号或负号依然会产生罚分,此时为了最小化罚分,必然选择这些正负号自身为一个子串,假设存在 a a a + + +号, b b b − - 号,那么最小罚分为 a + b − 2 × m i n ( a , b ) a + b - 2 \times min(a, b) a+b2×min(a,b)

代码:

#include<bits/stdc++.h>using namespace std;void solve() {int n;string s;cin >> n >> s;int add = 0, sub = 0;for (int i = 0; i < n; i++) {if (s[i] == '-') sub++;else add++;}cout << n - 2 * min(add, sub) << endl;
}int main() {int Case;cin >> Case;while (Case--) {solve();}return 0;
}

C.Grouping Increases(贪心)

题意:

给出一个包含 n n n个数字的数组 a a a,你需要按以下要求计算罚分:

  1. 将数组 a a a分为两个子序列 s , t s, t s,t(可能有个子序列为空)。

  2. 对于一个包含 m m m个数字的数组 b b b,产生的罚分 p ( b ) = ∑ i = 1 m − 1 f ( i ) p(b) = \sum\limits_{i = 1}^{m - 1}f(i) p(b)=i=1m1f(i),其中 f ( i ) f(i) f(i)为满足 b i < b i + 1 b_i < b_{i + 1} bi<bi+1则为 1 1 1,不满足则为 0 0 0

  3. 总罚分为 p ( s ) + p ( t ) p(s) + p(t) p(s)+p(t)

问:最小可能的罚分是多少?

分析:

由于对于子序列的罚分计算只考虑相邻的两个数字,那么只需要维护两个子序列最后的元素。

b b b为两个子序列中最后元素中的较小值, c c c为较大值,并按以下要求检查 a i a_i ai该加入哪个子序列:

  • 如果 a i ≤ b a_i \le b aib,那么 a i a_i ai将会加入最后元素较小的序列,即 b = a i b = a_i b=ai

  • 否则,再检查是否满足 a i ≤ c a_i \le c aic,如果满足,则将 a i a_i ai加入最后元素较大的序列,即 c = a i c = a_i c=ai

  • 如果以上两种情况均不满足,那么此时必然产生一点罚分,并且为了使之后的罚分尽可能小,当前数字 a i a_i ai必然会加入尾部元素较小的序列,即 b = a i b = a_i b=ai

代码:

#include<bits/stdc++.h>using namespace std;int a[200005];void solve() {int n;cin >> n;for (int i = 0; i < n; i++) cin >> a[i];int b = 1e9, c = 1e9, ans = 0;for (int i = 0; i < n; i++) {if (b > c) {swap(b, c);}if (a[i] <= b) {b = a[i];} else if (a[i] <= c) {c = a[i];} else {b = a[i];ans++;}}cout << ans << endl;
}int main() {int Case;cin >> Case;while (Case--) {solve();}return 0;
}

D.01 Tree(思维)

题意:

有一棵包含 n n n个叶节点的树,保证每个非叶节点均包含两个子节点,同时,对于所有非叶节点,走向子节点的边中均包含权值,且其中一条权值为 0 0 0,另一条权值为 1 1 1

你忘记了原本的树是什么样子的,只记得根节点到这 n n n个叶节点的权值之和,按dfs序给出这些叶节点的权值,问是否存在满足这些节点权值的树。

分析

由于每个非叶节点与子节点之间的边权分别为 0 , 1 0, 1 0,1,那么属于同一个父节点的两个节点的权值之差必然为 1 1 1,且权值较小的一个与父节点的权值一致,由此可知如果给出的叶节点合法,那么必然存在且仅存在一个叶节点的权值为 0 0 0

同时,由于叶节点以dfs序给出,那么属于同一个父节点的两个叶节点在dfs序中也必然相邻,为了便于处理,使用静态双向链表将 1 ∼ n 1 \sim n 1n这些节点按顺序连在一起。

由于非叶节点的权值与两个子节点的权值较小者相同,那么如果同时删除它的两个子节点(这两个子节点均为叶节点),该节点也会变成叶节点,为了便于处理,可以在操作时仅删除权值较大的节点,将另一个子节点视为删除后新产生的叶节点。

然后考虑从叶节点开始向上删除节点,按以下步骤执行:

  • 删除的节点,它在dfs序中相邻的两个节点中,必然存在一个节点的权值比它小 1 1 1(树上仅会存在一个权值为 0 0 0的节点,其他节点权值均大于 0 0 0),此时可以将节点视为待删除节点,放入大根堆中等待删除

  • 当从大根堆取出节点后,就需要对该节点进行删除操作了,由于该节点存储在静态双向链表上,那么需要同时修改前后节点的指针。

  • 然后检查当前节点删除后,左右两边相邻的节点能否进入待删除状态,如果能,就将节点也加入堆中。

删除完成后,如果仅剩下一个权值为 0 0 0的节点未被删除,那么就表示存在满足要求的树,否则,找不到满足要求的树。

代码:

#include<bits/stdc++.h>using namespace std;int n, a[200005], pre[200005], nxt[200005], vis[200005];
struct Node{int id, val;bool operator < (const Node &o) const {if (val != o.val) return val < o.val;return id > o.id;}
};priority_queue<Node> Q;int check(int x) {return x >= 1 && x <= n && (a[pre[x]] == a[x] - 1 || a[nxt[x]] == a[x] - 1);
}void solve() {cin >> n;int zero = 0;for (int i = 1; i <= n; i++) {cin >> a[i];pre[i] = i - 1;nxt[i] = i + 1;vis[i] = 0;if (a[i] == 0) zero++;}/*a[0]和a[n + 1]取-1时可能会导致a[1]=0或a[n]=0的情况入队,因此取不影响答案的-2*/a[0] = a[n + 1] = -2;if (zero == 0) {cout << "NO" << endl;return;}for (int i = 1; i <= n; i++) {/*找开始时就能进入待删除状态的节点*/if (check(i)) {vis[i] = 1;Q.push(Node{i, a[i]});}}while (!Q.empty()) {Node u = Q.top();Q.pop();/*相当于双向链表中删点,需将前后连起来*/nxt[pre[u.id]] = nxt[u.id];pre[nxt[u.id]] = pre[u.id];/*检查左右的节点能否进入待删除状态*/if (vis[nxt[u.id]] == 0 && check(nxt[u.id])) {vis[nxt[u.id]] = 1;Q.push(Node{nxt[u.id], a[nxt[u.id]]});}if (vis[pre[u.id]] == 0 && check(pre[u.id])) {vis[pre[u.id]] = 1;Q.push(Node{pre[u.id], a[pre[u.id]]});}}/*由于权值为0的节点必然不会被删除,那么只需要判断剩余的节点数量.如果为1,那么剩下的节点权值必然为0*/int cnt = 0;for (int i = 1; i <= n; i++) {if (vis[i] == 0) {cnt++;}}if (cnt == 1) cout << "YES" << endl;else cout << "NO" << endl;
}int main() {int Case;cin >> Case;while (Case--) {solve();}return 0;
}

E.Counting Prefixes(组合数学,思维)

题意

有一个仅含有 − 1 -1 1 1 1 1的数组 a a a,以及它对应的的前缀和数组排序以后的结果 p p p,问你原本的 a a a数组有多少种可能性。答案需要对 998244353 998244353 998244353取模。

思路

有两种明显无解的情况是比较好想到的:

  1. 如果 p p p数组仅有一个不为 − 1 , 1 -1,1 1,1的值,那么一定无解。
  2. 如果 p p p数组中最小的元素都比 1 1 1大,或者最大的元素都比 − 1 -1 1小,那也是不可能的。

对于其他情况,我们先 p p p将它恢复成未排序的状态,称这个未排序的前缀和数组为 p r e pre pre。假设某一个元素对应位置的前缀和为 s s s,我们可以写作 p r e [ i ] = s pre[i]=s pre[i]=s a a a数组在它之后的元素要么是 1 1 1,要么是 − 1 -1 1,即: p r e [ i ] = s + 1 pre[i]=s+1 pre[i]=s+1 p r e [ i ] = s − 1 pre[i]=s-1 pre[i]=s1。此时我们会发现:题目中的第 3 3 3个样例显然是无解的,因为 − 1 -1 1 1 , 2 1,2 1,2都不可能相邻出现。

下面,我们开始对这个问题的常规情况进行分析。我们假设 p n ≥ 0 p_n\ge0 pn0,若它小于 0 0 0,我们可以考虑这个 p p p数组元素全取相反数的结果,结论仍然是成立的(相当于所有的 1 1 1变成 − 1 -1 1 − 1 -1 1变成 1 1 1)。

这样以来我们可以想到:

  1. 先去构建一个先全为 1 1 1的序列,使得1的个数为 p n p_n pn个,此时前缀和数组中含有从 1 1 1 p n p_n pn这些元素,每个元素出现一次。例如,若 p n = 3 p_n=3 pn=3,则此时我们先构建1 1 1
  2. 如果还需要其他的 p n p_n pn,可以视为任意一个前缀和刚好为 p n p_n pn的位置插入一组(-1,1),此时会多出一个,例如1 1 1 -1 1,会有 2 2 2个位置对应的前缀和都为 3 3 3。下次插入时,我们可以把当前序列看做1 1 1 _ (-1 1) _ ,两个下划线对应的位置都可以进行插入、插入 k k k次以后,前缀和数组中有 k + 1 k+1 k+1 p n p_n pn,若 p n − 1 > 0 p_n-1>0 pn1>0,则 p n − 1 p_n-1 pn1也有 k + 1 k+1 k+1个(最开始的全 1 1 1序列中自带一个),否则有 k k k个。
  3. p n p_n pn插入完毕以后,我们可以看一下 p n − 1 p_n-1 pn1还差多少个。假如说,我们现在已经有 x x x p n − 1 p_n-1 pn1了,那说明目前我们的序列中有 x x x − 1 -1 1,但我们需要的 p n − 1 p_n-1 pn1可能有 y y y个。其中若 y < x y < x y<x,则说明无解;否则我们可以在 x x x − 1 -1 1的后面,再次加入(-1,1)。但要注意,每一次加入都会使得 − 1 -1 1多一个,因此我们可以这样推导插入的方案数:

按照这样的顺序,我们依次去插入 p n − 1 , p n − 2 p_n-1,p_n-2 pn1,pn2,一直控制到 p 1 p_1 p1即可。这个过程中可以补一个起始(或终止位置)的 0 0 0,便于计算。

代码

#include<bits/stdc++.h>using namespace std;
typedef long long ll;
const int N = 5050;
ll c[N][N];
int p[N], x[N * 2], cnt[N * 2];
const ll mod = 998244353;void get_c_matrix() {//返回值为int类型时会导致超时c[0][0] = 1;for (int i = 1; i <= 5000; ++i) {c[i][0] = 1;for (int j = 1; j <= i; ++j) {c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;}}
}ll get_c_value(int xx, int yy) {if (xx < 0 || yy < 0 || yy > xx)return 0;return c[xx][yy];
}int main() {get_c_matrix();int T, n, flag;ll ans, res;cin >> T;while (T--) {cin >> n;//进行必要的清空memset(cnt, 0, sizeof(cnt));cnt[N] = 1; //在起始处补一个0ans = 0;flag = 1; //用于标记是否有类似于1 3这样跳着的、不相邻的情况for (int i = 1; i <= n; i++) {//统计每个元素出现的个数cin >> p[i];cnt[p[i] + N]++;}if (n == 1) {//如果只有一个元素,那么必然是1或者-1if (abs(p[1]) == 1) cout << 1 << endl;else cout << 0 << endl;continue;}if (p[1] > 1 || p[n] < -1) {//类似于 2 2 3 或者-3 -2 -2也是绝对不可能的cout << 0 << endl;continue;}int l = min(p[1] + N, N), r = max(p[n] + N, N), i;  //不要忘记你补了个0for (i = l; i <= r; i++) {//如果有跳着的、不连续的,比如2 2 4,也是不可能的if (!cnt[i]) {flag = 0;cout << 0 << endl;break;}}if (!flag)continue;for (i = r; i >= l; i--) {x[r - 1] = cnt[r];//注意全1序列已经会产生部分前缀和if (r > 0 + N)x[r - 1]++;if (r == i)x[r - 1]--;for (int j = r - 1; j >= l; j--) {//进行模拟x[j - 1] = cnt[j] - x[j];if (j - 1 >= i)x[j - 1]++;if (j - 1 >= 0 + N)x[j - 1]++;}if (x[l - 1] == 0) {res = 1;for (int j = r - 1; j >= l; j--) {res = (res * get_c_value(cnt[j] - 1, cnt[j] - x[j])) % mod;}ans = (ans + res) % mod;}}cout << ans << endl;}return 0;
}

F1.Wine Factory (Easy Version)(后缀和,线段树)

题意:

n n n座水塔,其中第 i i i座包含 a i a_i ai升的水,且拥有一个能消除 b i b_i bi升水的法师,同时相邻两座水塔之间拥有一道阀门,第 i i i座高塔与第 i + 1 i + 1 i+1座水塔之间的阀门允许通过 c i c_i ci升水。

对于第 i ( i = 1 , 2 , . . . , n ) i(i = 1, 2, ..., n) i(i=1,2,...,n)座塔,将会进行以下操作:

  1. 法师将水塔 i i i中最多 b i b_i bi升的水消除,并将消除的水转化为等量的红酒。

  2. 如果 i ≠ n i \ne n i=n,那么至多 c i c_i ci升水可以由阀门流到第 i + 1 i + 1 i+1座水塔。

题目将给出 q q q次更新,每次给出四个数字 p , x , y , z p, x, y, z p,x,y,z,即将 a p = x , b p = y , c p = z a_p = x, b_p = y, c_p = z ap=x,bp=y,cp=z,并要求对于每次更新,输出最多能获得多少升红酒。

特殊条件:对于所有数据,有 c i = 1 0 18 , z = 1 0 18 c_i = 10^{18}, z = 10^{18} ci=1018,z=1018

分析:

对于特殊条件, c i , z c_i, z ci,z均为 1 0 18 10^{18} 1018,由于 ∑ i = 1 n m a x ( a i ) = 5 × 1 0 14 < 1 0 18 \sum\limits_{i = 1}^{n}max(a_i) = 5 \times 10^{14} < 10^{18} i=1nmax(ai)=5×1014<1018,那么如果水塔中的水没有被全部消除,则剩下的水均能流到下一座高塔,即可以不考虑 c i c_i ci这个限制因素。

先考虑每座水塔自身无法消除的水量: v i = a i − b i v_i = a_i - b_i vi=aibi,当 v i > 0 v_i > 0 vi>0时,未被消除的水量必然需要由后面的法师来进行消除(如果可以的话),因此对于水塔 k k k而言,无法消除的水量实际为 f ( k ) = ∑ i = k n v i f(k) = \sum\limits_{i = k}^{n}v_i f(k)=i=knvi。那么对于所有水塔来说,无法消除的水量即为 m a x ( f ( 1 ) , f ( 2 ) , . . . , f ( n ) ) max(f(1), f(2), ..., f(n)) max(f(1),f(2),...,f(n))

使用后缀和建一棵线段树,维护区间上的最大值,并使用变量 s u m sum sum记录水塔的总水量。

每次更新水塔 p p p时,由于线段树维护的是后缀和,那么对于所有 ( p + 1 ) ∼ n (p + 1) \sim n (p+1)n上的点,均不会收到影响,只需要对区间 1 ∼ p 1 \sim p 1p进行更新,先减去原本的 v p v_p vp,再加上当前更新后的新 v p = x − y v_p = x - y vp=xy

那么最后的答案就是 s u m − m a x ( f ( 1 ) , f ( 2 ) , . . . , f ( n ) ) sum - max(f(1), f(2), ..., f(n)) summax(f(1),f(2),...,f(n)),其中 m a x ( f ( 1 ) , f ( 2 ) , . . . , f ( n ) ) max(f(1), f(2), ..., f(n)) max(f(1),f(2),...,f(n))为线段树树根中记录的信息。

代码:

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
const int N = 5e5 + 5e2;LL n, q, a[N], b[N];
LL sum, T[N << 2], lazy[N << 2], c[N], v[N], sv[N];void pushup(int x) {T[x] = max(T[x << 1], T[x << 1 | 1]);
}void build(int l, int r, int x) {if (l == r) {T[x] = sv[l];return;}int mid = l + r >> 1;build(l, mid, x << 1);build(mid + 1, r, x << 1 | 1);pushup(x);
}void pushdown(int x) {if (lazy[x]) {lazy[x << 1] += lazy[x];lazy[x << 1 | 1] += lazy[x];T[x << 1] += lazy[x];T[x << 1 | 1] += lazy[x];lazy[x] = 0;}
}void update(int l, int r, int x, int ul, int ur, LL val) {if (l >= ul && r <= ur) {T[x] += val;lazy[x] += val;return;}pushdown(x);int mid = l + r >> 1;if (ul <= mid) update(l, mid, x << 1, ul, ur, val);if (ur > mid) update(mid + 1, r, x << 1 | 1, ul, ur, val);pushup(x);
}void solve() {cin >> n >> q;sum = 0;for (int i = 1; i <= n; i++) cin >> a[i];for (int i = 1; i <= n; i++) cin >> b[i];for (int i = 1; i < n; i++)  cin >> c[i];for (int i = n; i >= 1; i--) {v[i] = a[i] - b[i];sv[i] = v[i] + sv[i + 1];sum += a[i];}build(1, n, 1);while (q--) {int p, x, y;LL z;cin >> p >> x >> y >> z;sum -= a[p];//减去原本的水量/*减掉原本的vp*/update(1, n, 1, 1, p, -v[p]);a[p] = x;b[p] = y;v[p] = x - y;//更新vpsum += a[p];//加上现在的水量/*加上现在的vp*/update(1, n, 1, 1, p, v[p]);/*出现负数说明所有水均能消除,此时需要减去的值为0,需取max*/cout << sum - max(0ll, T[1]) << endl;}
}int main() {ios::sync_with_stdio(false);int Case = 1;while (Case--) {solve();}return 0;
}

学习交流

以下为学习交流QQ群,群号: 546235402,每周题解完成后都会转发到群中,大家可以加群一起交流做题思路,分享做题技巧,欢迎大家的加入。

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

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

相关文章

JS逆向实战案例2——某房地产token RSA加密

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、 反爬分析 url1&#xff1a;aHR0cDovL3pmY2ouZ3ouZ292LmNuL3pmY2ovZnl4eC94a2I/c1Byb2plY3RJZD05MzBlMDQ0MmJjNjA0MTBkYTgzNzQ0MmQ…

用可视化案例讲Rust编程2. 编码的核心组成:函数

从第一天学习编程&#xff0c;可能大家就听说这样的组成公式&#xff1a; 程序算法数据结构 ——该公式出自著名计算机科学家沃思(Nikiklaus Wirth) 实际上&#xff0c;程序除了以上两个主要要素之外&#xff0c;还应当采用结构化程序设计方法进行程序设计&#xff0c;并且用…

SpringBoot多环境配置Maven Profile组

Maven profile组 注意切换配置时 mvn clean下 或者 clean 加install 或者compile 编译 clean之后 install下 或者compile 编译 nohup java -Xms256m -Xmx512m -Dfile.encodingUTF-8 -jar demo.jar --spring.profiles.activeprod > system.log 2>&1 &

k8s中的基础概念

k8s可以从硬件和软件两方面来理解&#xff1a; 硬件&#xff1a; 1、节点&#xff08;Node&#xff09;&#xff1a;类似于手机、平板、电脑 2、集群&#xff08;Cluster&#xff09;&#xff1a;多个节点组合到一起 3、持久卷&#xff08;Persistent Volumes&#xff09;&…

SpringCloud 之HttpClient、HttpURLConnection、OkHttpClient切换源码

承接上文&#xff0c;之前已经分析过OpenFegin 的创建、发送请求源码了&#xff0c;接下来&#xff0c;分析下底层的HttpClient、HttpURLConnection、OkHttpClient切换从源码级别来看是如何做到的。 Spring Cloud OpenFegin&#xff08;创建、发送请求&#xff09;源码 Http…

在本地测试nginx中localhost不行,需要写成127.0.0.1

在Windows 10系统的命令提示符cmd中&#xff0c;执行命令ping localhost&#xff0c;并没有出现我与其的ip地址“127.0.0.1”&#xff0c;而是“[::1]”。 问题原因 在cmd中ping localhost解析出来的是ipv6的::1的原因是windows有个优先解析列表&#xff0c;当ipv6的优先级高于…

深度学习目标跟踪简述

深度学习目标跟踪是一个活跃的研究领域&#xff0c;它涉及使用深度学习技术来跟踪视频或实时摄像头中的对象。这个领域通常包括以下几个关键方面&#xff1a; 目标检测&#xff1a;在开始跟踪前&#xff0c;首先需要在视频的初始帧中检测到目标。这通常是通过卷积神经网络&…

基于ssm物流配送人员车辆调度管理系统的设计与实现+vue论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统物流配送人员车辆调度信息管理难度大&#xff0c;容错率低…

Thingsbaord采用redis缓存(自用)

在CentOS系统上&#xff0c;您可以通过以下步骤使用yum安装Redis&#xff1a; 添加EPEL仓库&#xff1a; 首先&#xff0c;需要添加EPEL&#xff08;Extra Packages for Enterprise Linux&#xff09;仓库&#xff0c;因为Redis可能不在默认的CentOS仓库中。使用以下命令添加EP…

【python】正则表达式-快速信息匹配,过滤与检测

前言 菜某的总结&#xff0c;希望能够帮到大家。 正则表达式的概念 简单来说就是匹配信息&#xff0c;创建一个规则&#xff0c;匹配文本中符合这个规则的内容 作用领域 单单看他的概念可能觉得他的用途也就是查找&#xff0c;实际上他的用途很广泛 1.信息筛选&#xff0c…

大语言模型面试问题

自己在看面经中遇到的一些面试题&#xff0c;结合自己和理解进行了一下整理。 transformer中求和与归一化中“求和”是什么意思&#xff1f; 求和的意思就是残差层求和&#xff0c;原本的等式为y H(x)转化为y x H(x)&#xff0c;这样做的目的是防止网络层数的加深而造成的梯…

如何创建自己的小程序?零编程一键创建实战指南

当今瞬息万变的数字世界中&#xff0c;拥有一个属于自己的小程序已成为企业与个人展示、服务和互动的重要途径。无需编码知识&#xff0c;通过便捷的云端可视化平台&#xff0c;也可以轻松创建一款符合自身需求且功能丰富的小程序。下面给大家分享如何创建自己的小程序。 1、选…

消息开始事件message start event

一&#xff1a;bpmn 二&#xff1a;java repositoryService.createDeployment().name("消息事件流程").addClasspathResource("bpmn/msg_event_process.bpmn").deploy(); identityService.setAuthenticatedUserId("huihui"); ProcessInstance p…

自适应批量生成二维码源码系统:电脑+手机端自适应 支持任何类型批量生成二维码 附带完整的搭建教程

在当今数字化的时代&#xff0c;二维码已经成为了我们日常生活和工作中的重要组成部分。无论是分享链接、添加好友&#xff0c;还是支付购物&#xff0c;二维码都以其便捷性受到了广泛的欢迎。下面&#xff0c;罗峰就来给大家分享一款自适应批量生成二维码源码系统&#xff0c;…

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!

原文链接 https://openaigptguide.com/gpt-store-and-chatgpt-team/ OpenAI推出的两款新产品和服务&#xff1a;GPT Store和ChatGPT Team&#xff0c;提供了许多全新的解决方案和功能&#xff0c;旨在帮助用户更轻松地使用和构建GPT工具&#xff0c;同时也增加了公司的收入来源…

【JaveWeb教程】(17) MySQL数据库开发之 MySQL简介、安装、数据类型、SQL通用语法 详细代码示例讲解

目录 前言1. MySQL概述1.1 安装1.1.1 版本1.1.2 安装1.1.3 连接1.1.4 企业使用方式(了解) 1.2 数据模型1.3 SQL简介1.3.1 SQL通用语法1.3.2 分类 前言 在我们讲解SpringBootWeb基础知识(请求响应案例)的时候&#xff0c;我们讲到在web开发中&#xff0c;为了应用程序职责单一&…

Laravel 使用rdkafka_laravel详细教程(实操避坑)

一、选择rdkafka 首先要看版本兼容问题&#xff0c;我的是Laravel5.6&#xff0c;PHP是7.3.13&#xff0c;所以需要下载兼容此的rdkafka&#xff0c;去 Packagist 搜索 kafka &#xff0c;我用的是 Packagist选择里面0.10.5版本&#xff0c; 二、安装rdkafka 在 Laravel 项目…

python爬虫实战(9)--获取澎pai热榜

1. 需要的类包 import pandas as pd import requests2. 请求地址 通过分析&#xff0c;数据可以直接从接口获取&#xff0c;无需解析页面标签&#xff0c;直接取出我们需要的数据即可。 def fetch_hot_news(api_url):response requests.get(api_url)if response.status_cod…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-3(2) 刚体的位形 Configuration of Rigid Body

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

Vue+Element Ui实现el-table自定义表头下拉选择表头筛选

用vueelement ui开发管理系统时&#xff0c;使用el-table做表格&#xff0c;当表格列过多的时候&#xff0c;想要做成可选表头的&#xff0c;实现表格列的筛选显示&#xff0c;效果如下&#xff1a; 代码文件结构&#xff1a; 废话不多说&#xff0c;直接上代码&#xff1a; 第…