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

【2024年浙江工商大学程序设计竞赛新生赛(同步赛)部分题解】

比赛链接

C. 交换

题目大意

给定一个长度为 n n n 的数组 a a a。一开始你有一个总和 s = 0 s = 0 s=0

现在你需要做 n n n 次操作,第 i i i 次操作的流程如下( 1 ⩽ i ⩽ n 1 \leqslant i \leqslant n 1in):

  • 选择一个下标 p ∈ [ 1 , n ) p \in [1, n) p[1,n),然后交换 a [ p ] , a [ p + 1 ] a[p], \ a[p + 1] a[p], a[p+1](如果你不想选,这一小步可以跳过);
  • s : = s + a [ i ] s := s + a[i] s:=s+a[i]

n n n 次操作结束后你能获得的最大的 s s s

数据范围

  • 2 ⩽ n ⩽ 500 2 \leqslant n \leqslant 500 2n500
  • 1 ⩽ a i ⩽ 1 0 6 1 \leqslant a_i \leqslant 10^6 1ai106

Solution

我们观察这个数据范围,一眼 O ( n 3 ) O(n^3) O(n3) 的解法,而且大概率 d p dp dp。只不过有可能是 O ( n 2 ) O(n^2) O(n2) 的状态, O ( n ) O(n) O(n) 的转移;还有可能是 O ( n 3 ) O(n^3) O(n3) 的状态,以及需要优化成 O ( 1 ) O(1) O(1) 的转移。

首先,我们的状态需要操作次数 i i i,因为每个操作次数要加的 a [ i ] a[i] a[i] 不一样。其次,我们还要交换次数 j j j,因为每次操作可以不选下标 p p p 进行交换。最后,我们还要知道交换后 a [ i ] a[i] a[i] 变成了什么,即 a [ i ] : = a [ k ] a[i] := a[k] a[i]:=a[k],我们仅需记录这个 k k k

这样就确定了我们的状态是 O ( n 3 ) O(n^3) O(n3) 的,因此我们一定需要 O ( 1 ) O(1) O(1) 的优化转移。

d p [ i ] [ j ] [ k ] dp[i][j][k] dp[i][j][k] 表示进行了 i i i 次操作,已经做了 j j j 次交换,将 a [ i ] : = a [ k ] a[i] := a[k] a[i]:=a[k] 能得到的最大 s s s

状态转移:

  • d p [ i ] [ j ] [ k ] = d p [ i − 1 ] [ j − 1 ] [ k ] + a [ k ] dp[i][j][k] = dp[i - 1][j - 1][k] + a[k] dp[i][j][k]=dp[i1][j1][k]+a[k],表示第 i i i 次操作要交换 a [ i − 1 ] a[i - 1] a[i1] a [ i ] a[i] a[i],而 a [ i − 1 ] a[i - 1] a[i1] 在上一次操作中已经有 a [ i − 1 ] : = a [ k ] a[i - 1] := a[k] a[i1]:=a[k]
  • d p [ i ] [ j ] [ k ] = d p [ i − 1 ] [ j − ∣ i − k ∣ ] [ k 1 ] + a [ k ] , k 1 < k dp[i][j][k] = dp[i - 1][j - |i - k|][k_1] + a[k], \ k_1 < k dp[i][j][k]=dp[i1][jik][k1]+a[k], k1<k
    • 满足的条件有 j − ∣ i − k ∣ ⩾ 0 j - |i - k| \geqslant 0 jik0,即 max ⁡ ( 0 , i − j ) ⩽ k ⩽ min ⁡ ( n , i + j ) \max(0, \ i - j) \leqslant k \leqslant \min(n, \ i + j) max(0, ij)kmin(n, i+j)
    • ∣ i − k ∣ |i - k| ik 表示把 a [ k ] a[k] a[k] 挪到 a [ i ] a[i] a[i] 需要 ∣ i − k ∣ |i - k| ik 交换;
    • 除此之外, k 1 < k k_1 < k k1<k 表示第 i − 1 i - 1 i1 次操作可以交换到 a [ i − 1 ] a[i - 1] a[i1] 的为 a [ k 1 ] a[k_1] a[k1]。原因如下:
      • 如果 k 1 > k k_1 > k k1>k,说明它比 a [ k ] a[k] a[k] 更值,才会花更大的代价(交换次数)将它换到前面来,这样的话应该是 a [ k 1 ] a[k_1] a[k1] 一路平推后面的一段区间,那就只有 k 1 = k k_1 = k k1=k 的可能;
      • 但如果 k 1 = k k_1 = k k1=k,按照表达式就是 d p [ i ] [ j ] [ k ] = d p [ i − 1 ] [ j ] [ k ] + a [ k ] dp[i][j][k] = dp[i - 1][j][k] + a[k] dp[i][j][k]=dp[i1][j][k]+a[k],显然不对,这表示原先在 i − 1 i - 1 i1 a [ k ] a[k] a[k] 凭空到了 i i i 的位置。
    • 这个表达式如果枚举 k 1 ∈ [ 1 , k ] k_1 \in [1, k] k1[1,k],是 O ( n ) O(n) O(n) 的转移,不符合我们的要求,因此需要优化。考虑到我们要 d p [ i ] [ j ] [ k ] dp[i][j][k] dp[i][j][k] 最大,那只要选出最大的 d p [ i − 1 ] [ j − ∣ i − k ∣ ] [ k 1 ] , k 1 < k dp[i - 1][j - |i - k|][k_1], \ k_1 < k dp[i1][jik][k1], k1<k 即可,这就相当于求一个前缀最大值,用一个二维数组记录后两维的前缀最大值即可。

时间复杂度 O ( n 3 ) \mathcal{O}(n^3) O(n3)

  • 这份代码跑了 390 m s 390ms 390ms,按理来说 50 0 3 = 1.25 × 1 0 8 500^3 = 1.25 \times 10^8 5003=1.25×108,我们是需要卡点常的,但是牛牛机子比较厉害,再加上转移方程对 k k k 的限制,大概率是 O ( n 3 2 ) O(\frac{n^3}{2}) O(2n3) 这样的复杂度,常数自然少了一半,所以可以比较快速通过。

C++ Code

#include <bits/stdc++.h>using i64 = long long;template<class T>
std::istream &operator>>(std::istream &is, std::vector<T> &a) {for (auto &x: a) {is >> x;}return is;
}constexpr int inf = 1E9;int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int n;std::cin >> n;std::vector<int> a(n);std::cin >> a;std::vector dp(n + 1, std::vector(n, -inf));std::vector max(n + 1, std::vector(n + 1, 0));for (int i = 0; i < n; i++) {std::vector ndp(n + 1, std::vector(n, -inf));for (int j = 1; j <= i + 1; j++) {for (int k = 0; k < n; k++) {ndp[j][k] = dp[j - 1][k] + a[k];}}for (int j = 0; j <= i + 1; j++) {for (int k = 0; k < n; k++) {max[j][k + 1] = std::max(max[j][k], dp[j][k]);}}for (int j = 0; j <= i + 1; j++) {for (int k = std::max(i - j, 0); k <= i + j and k < n; k++) {ndp[j][k] = std::max(ndp[j][k], max[j - std::abs(i - k)][k] + a[k]);}}dp.swap(ndp);}int ans = 0;for (int i = 0; i <= n; i++) {for (int j = 0; j < n; j++) {ans = std::max(ans, dp[i][j]);}}std::cout << ans << "\n";return 0;
}

F. 感谢庆典的MEX

题目大意

给定一个长度为 n n n 的非负整数数组 a a a,再给定一个正整数 m m m

现在你可以进行任意次操作,使得 m e x ( a ) mex(a) mex(a) 最大化。每次操作如下:

  • 选择下标 i ∈ [ 1 , n ] i \in [1, n] i[1,n],然后 a i : = ⌊ a i m ⌋ a_i := \lfloor \frac{a_i}{m} \rfloor ai:=mai

其中 m e x ( a ) mex(a) mex(a) 指的是数组 a a a 中未出现的最小非负整数,例如 m e x ( { 0 , 1 , 3 } ) = 2 mex(\lbrace0, 1, 3\rbrace) = 2 mex({0,1,3})=2

数据范围

  • 1 ⩽ n ⩽ 1 0 5 1 \leqslant n \leqslant 10^5 1n105
  • 1 ⩽ m ⩽ 1 0 18 1 \leqslant m \leqslant 10^{18} 1m1018
  • 0 ⩽ a i ⩽ 1 0 18 0 \leqslant a_i \leqslant 10^{18} 0ai1018

Solution

首先讨论特殊情况 m = 1 m = 1 m=1。这种情况下怎么操作数组都不会发生变化,因此相当于直接求 m e x ( a ) mex(a) mex(a)。这里我用的方式是将数组 a a a 排序去重,然后 O ( n ) O(n) O(n) 遍历 a a a 看哪个没出现。

下面是 m > 1 m > 1 m>1 的情况。

首先 m e x ( a ) ≠ 0 mex(a) \neq 0 mex(a)=0,因为我们一定可以把 ∀ a i \forall a_i ai 除以 m m m 下取整除到 0 0 0

其次 m e x ( a ) ⩽ n mex(a) \leqslant n mex(a)n,因为数组总共就 n n n 个元素,最多 0 , 1 , ⋯ , n − 1 0, \ 1, \ \cdots, \ n - 1 0, 1, , n1 全出现一遍。

再次就是 m e x ( a ) mex(a) mex(a) 具有二段性。假设现在我们构造了一个 m e x ( a ) = k mex(a) = k mex(a)=k,那现在我们任选一个非负整数 u ( u < k ) u(u < k) u(u<k),只要有 a i = u a_i = u ai=u,就令 a i : = ⌊ a i m ⌋ a_i := \lfloor \frac{a_i}{m} \rfloor ai:=mai。这样一来,就一定没有任何 u u u 出现在 a a a 里,这样 m e x ( a ) = u < k mex(a) = u < k mex(a)=u<k

综上,我们可以在 [ 1 , n ] [1, n] [1,n] 内二分 m e x ( a ) mex(a) mex(a)。下面我们讨论 c h e c k check check 函数怎么写。

对于确定的 m e x mex mex,若 a i ⩾ m e x a_i \geqslant mex aimex 就一直除以 m m m 直到 a i < m e x a_i < mex ai<mex

  • a i = 0 a_i = 0 ai=0,直接记录;
  • 否则 a i > 0 a_i > 0 ai>0,若 a i a_i ai 出现过,就继续除以 m m m,直到 a i = 0 a_i = 0 ai=0 a i a_i ai 没出现过。

最后记录 [ 0 , m e x ) [0, mex) [0,mex) 内有多少数出现即可,若 0 , 1 , ⋯ , m e x − 1 0, \ 1, \ \cdots , \ mex - 1 0, 1, , mex1 均出现了,就可以尝试扩大 m e x mex mex

有个减小常数的技巧,就是如果有 a i ⩾ n a_i \geqslant n ain,就提前预处理不断除以 m m m 直到 a i < n a_i < n ai<n

时间复杂度 O ( n ⋅ log ⁡ n ⋅ log ⁡ m max ⁡ ( a ) ) \mathcal{O}(n \cdot \log n \cdot \log_{m}\max(a)) O(nlognlogmmax(a))

  • 算下来极限大约是 9.6 × 1 0 7 9.6 \times 10^7 9.6×107 的计算量,实际上跑出来是 1365 m s 1365ms 1365ms,算是常数稍大了。

C++ Code

#include <bits/stdc++.h>using i64 = long long;template<class T>
std::istream &operator>>(std::istream &is, std::vector<T> &a) {for (auto &x: a) {is >> x;}return is;
}int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int n;i64 m;std::cin >> n >> m;std::vector<i64> a(n);std::cin >> a;std::ranges::sort(a);if (m == 1) {auto ua = std::ranges::unique(a);a.erase(ua.begin(), ua.end());int lst = 0;for (auto x: a) {if (x != lst) {break;}lst++;}std::cout << lst << "\n";return 0;}for (auto &x: a) {if (x >= n) {x /= m;}}auto check = [&](int mex) {std::vector<short> has(mex);for (auto x: a) {while (x >= mex or (x > 0 and has[x])) {x /= m;}has[x] = 1;}return std::accumulate(has.begin(), has.end(), 0) == mex;};int lo = 1, hi = n;while (lo < hi) {int mid = lo + hi + 1 >> 1;if (check(mid)) {lo = mid;} else {hi = mid - 1;}}std::cout << hi << "\n";return 0;
}

G. 约数和

题目大意

定义 F ( n ) F(n) F(n) 表示正整数 n n n [ 1 , n ] [1, \ n] [1, n] 的约数个数。

给定两个正整数 n , m n, \ m n, m,求 ∑ i = n m F ( i ) \sum\limits_{i = n}^{m}F(i) i=nmF(i),答案对 998244353 998244353 998244353 取模。

数据范围

  • 1 ⩽ n < m ⩽ 1 0 9 1 \leqslant n < m \leqslant 10^9 1n<m109

Solution

这种题显然是 O ( n ) O(\sqrt{n}) O(n ) 的,要么是分解质因数,要么是整除分块。

首先用前缀和拆开,答案为 ∑ i = 1 m F ( i ) − ∑ i = 1 n − 1 F ( i ) \sum\limits_{i = 1}^{m}F(i) - \sum\limits_{i = 1}^{n - 1}F(i) i=1mF(i)i=1n1F(i)。然后考虑化简 ∑ i = 1 n F ( i ) \sum\limits_{i = 1}^{n}F(i) i=1nF(i)

∑ i = 1 n F ( i ) = ∑ i = 1 n ∑ j = 1 i [ j ∣ i ] = ∑ j = 1 n ∑ i = j n [ j ∣ i ] = ∑ j = 1 n ∑ i = 1 ⌊ n j ⌋ 1 = ∑ j = 1 n s ( ⌊ n j ⌋ ) \begin{align*} \sum\limits_{i = 1}^{n}F(i) &= \sum\limits_{i = 1}^{n}\sum\limits_{j = 1}^{i}[j \mid i] \\ &= \sum\limits_{j = 1}^{n}\sum\limits_{i = j}^{n}[j \mid i] \\ &= \sum\limits_{j = 1}^{n}\sum\limits_{i = 1}^{\lfloor \frac{n}{j} \rfloor}1 \\ &= \sum\limits_{j = 1}^{n}s\left(\lfloor \frac{n}{j} \rfloor \right) \end{align*} i=1nF(i)=i=1nj=1i[ji]=j=1ni=jn[ji]=j=1ni=1jn1=j=1ns(jn)

其中 s ( x ) = x ( x + 1 ) 2 s(x) = \frac{x(x + 1)}{2} s(x)=2x(x+1)

到这里就可以明显看到 整除分块 了,如果没学过可以先学一下。

时间复杂度 O ( m + n ) \mathcal{O}(\sqrt{m} + \sqrt{n}) O(m +n )

C++ Code

#include <bits/stdc++.h>using i64 = long long;template<class T>
constexpr T power(T a, i64 b) {T res = 1;for (; b; b /= 2, a *= a) {if (b % 2) {res *= a;}}return res;
}
template<int P>
struct MInt {int x;constexpr MInt() : x{} {}constexpr MInt(i64 x) : x{norm(x % getMod())} {}static int Mod;constexpr static int getMod() {if (P > 0) {return P;} else {return Mod;}}constexpr static void setMod(int Mod_) {Mod = Mod_;}constexpr int norm(int x) const {if (x < 0) {x += getMod();}if (x >= getMod()) {x -= getMod();}return x;}constexpr int val() const {return x;}explicit constexpr operator int() const {return x;}constexpr MInt operator-() const {MInt res;res.x = norm(getMod() - x);return res;}constexpr MInt inv() const {assert(x != 0);return power(*this, getMod() - 2);}constexpr MInt &operator*=(MInt rhs) & {x = 1LL * x * rhs.x % getMod();return *this;}constexpr MInt &operator+=(MInt rhs) & {x = norm(x + rhs.x);return *this;}constexpr MInt &operator-=(MInt rhs) & {x = norm(x - rhs.x);return *this;}constexpr MInt &operator/=(MInt rhs) & {return *this *= rhs.inv();}friend constexpr MInt operator*(MInt lhs, MInt rhs) {MInt res = lhs;res *= rhs;return res;}friend constexpr MInt operator+(MInt lhs, MInt rhs) {MInt res = lhs;res += rhs;return res;}friend constexpr MInt operator-(MInt lhs, MInt rhs) {MInt res = lhs;res -= rhs;return res;}friend constexpr MInt operator/(MInt lhs, MInt rhs) {MInt res = lhs;res /= rhs;return res;}friend constexpr std::istream &operator>>(std::istream &is, MInt &a) {i64 v;is >> v;a = MInt(v);return is;}friend constexpr std::ostream &operator<<(std::ostream &os, const MInt &a) {return os << a.val();}friend constexpr bool operator==(MInt lhs, MInt rhs) {return lhs.val() == rhs.val();}friend constexpr bool operator!=(MInt lhs, MInt rhs) {return lhs.val() != rhs.val();}
};template<>
int MInt<0>::Mod = 998244353;template<int V, int P>
constexpr MInt<P> CInv = MInt<P>(V).inv();constexpr int P = 998244353;
using Z = MInt<P>;int next(int n, int x) {return n / (n / x);
}Z s(int n) {return Z(n) * (n + 1) / 2;
}Z calc(int n) {Z ans = 0;for (int l = 1, r; l <= n; l = r + 1) {r = next(n, l);ans += (r - l + 1) * s(n / l);}return ans;
}int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int n, m;std::cin >> n >> m;n--;std::cout << calc(m) - calc(n) << "\n";return 0;
}

I. 数字重组

题目大意

对于一个非负整数 x x x,你可以 任意重排 整数中每个数字的位置,允许有前导零。

对于重排后的数字 x ′ x' x,我们按照如下规则计算权值:

  • 将这个数字 从低位到高位 3 3 3 位分成一组,每组的权值为这组数字所表示的大小,总权值为所有组的权值之
  • 若分组后组内数字不足 3 3 3 位则在高位补 0 0 0
  • 若总位数是 3 3 3 的倍数,就没有再补 3 k ( k ∈ N + ) 3k(k \in N^+) 3k(kN+) 位高位 0 0 0 的说法;

请计算通过重排能得到的最大总权值。

数据范围

  • 0 ⩽ x ⩽ 1 0 9 0 \leqslant x \leqslant 10^9 0x109

Solution

模拟题。

只要把 x x x 看成字符串,然后用 next_permutation 函数进行阶乘型枚举。对每个 x ′ x' x,我们从低到高三位三位枚举,用 x ′ . s i z e ( ) > i × 3 x'.size() > i \times 3 x.size()>i×3 判断是否要补高位 0 0 0,其中 i ∈ [ 0 , 3 ] i \in [0, \ 3] i[0, 3]

时间复杂度 O ( ⌈ log ⁡ 10 x ⌉ ! × log ⁡ 10 x ) \mathcal{O}(\lceil \log_{10}x \rceil! \times \log_{10}x) O(⌈log10x⌉!×log10x)

  • 跑满四舍五入大约是 4 × 1 0 7 4 \times 10^7 4×107 的计算量,实测 583 m s 583ms 583ms,可能我这写法常数稍大。

C++ Code

#include <bits/stdc++.h>using i64 = long long;int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::string s;std::cin >> s;std::vector<int> ord(s.size());// std::ranges::iota(ord, 0); C23 写法牛牛不支持std::iota(ord.begin(), ord.end(), 0);int ans = 0;do {std::string t;for (int i: ord) {t += s[i];}int res = 1;for (int i = 0; i <= 3 and t.size() > i * 3; i++) {while (t.size() < (i + 1) * 3) {t = '0' + t;}res *= std::stoi(t.substr(t.size() - (i + 1) * 3, 3));}ans = std::max(ans, res);} while (std::next_permutation(ord.begin(), ord.end()));std::cout << ans << "\n";return 0;
}

相关文章:

【2024年浙江工商大学程序设计竞赛新生赛(同步赛)部分题解】

比赛链接 C. 交换 题目大意 给定一个长度为 n n n 的数组 a a a。一开始你有一个总和 s 0 s 0 s0。 现在你需要做 n n n 次操作&#xff0c;第 i i i 次操作的流程如下&#xff08; 1 ⩽ i ⩽ n 1 \leqslant i \leqslant n 1⩽i⩽n)&#xff1a; 选择一个下标 p ∈…...

[SAP ABAP] DEBUG ABAP程序中的循环语句

在ABAP程序开发中可能会遇到要DEBUG循环语句的情况&#xff0c;这个循环语句可能会执行上万次&#xff0c;但我们希望程序执行循环到100次就停下来&#xff0c;也就是希望DEBUG断点设置在循环语句的第100次停下来观察执行的结果&#xff0c;这时我们可以在DEBUG程序时通过设置一…...

解决阿里云轻量级服务器 Ubuntu 24.04.1 LTS 没网也 ping 不通 8.8.8.8 以及 route -n 没有输出任何转发信息

事情发生在两天前&#xff0c;位于公网的阿里云轻量级服务器&#xff08;Ubuntu 24.04.1 LTS&#xff09;忽然没网。主要是上次上服务器进行配置已经是一个多月前&#xff0c;最近也没有做什么事情&#xff0c;就忽然没网了&#xff0c;让人纳闷。更主要的是&#xff0c;上次备…...

AUTOSAR:SOME/IP 概念

文章目录 1. 用例与需求1.1 典型用例1.2 对中间件的要求 2. 协议栈示例3. SOME/IP 概念3.1 中间件整体功能与架构3.2 服务组成元素详细解释 4. 服务发现机制深入剖析5. 总结 1. 用例与需求 1.1 典型用例 信息娱乐系统&#xff1a; 后座娱乐系统连接&#xff1a;允许后排乘客连…...

STM32--中断

中断 中断向量表 定义一段固定的内存&#xff0c;以4字节对齐&#xff0c;存放各个中断服务函数程序的首地址。定义在启动文件中。 中断相关寄存器 内核中断不经过中断使能、除能寄存器。 中断优先级 1、抢占优先级&#xff1a;高高抢占优先级可以打断正在执行的低抢占优先…...

海思3559a开发

目录 固件烧录配置网络nfs挂载虚拟机文件使用telnet连接开发板 固件烧录 1、配置好HiTool烧录工具 需要注意长度必须不小于对应文件大小 2、开始烧录 先点击擦除全器件&#xff0c;重新给开发板上电&#xff0c;擦除成功后如下图所示。 点击烧写&#xff0c;重新给开发板上电…...

优选算法——位运算

1. 常见位运算总结 2. 判定字符是否唯一 题目链接&#xff1a;面试题 01.01. 判定字符是否唯一 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分析&#xff1a;本题有很多种做法&#xff0c;这里我们使用位图来解决&#xff0c;这种做法是一种效率很高…...

【JAVA】旅游行业中大数据的使用

一、应用场景 数据采集与整合&#xff1a;全面收集旅游数据&#xff0c;如客流量、游客满意度等&#xff0c;整合形成统一数据集&#xff0c;为后续分析提供便利。 舆情监测与分析&#xff1a;实时监测旅游目的地的舆情信息&#xff0c;运用NLP算法进行智能处理&#xff0c;及…...

使用html和JavaScript实现一个简易的物业管理系统

码实现了一个简易的物业管理系统&#xff0c;主要使用了以下技术和功能&#xff1a; 1.主要技术 使用的技术&#xff1a; HTML: 用于构建网页的基本结构。包括表单、表格、按钮等元素。 CSS: 用于美化网页的外观和布局。设置字体、颜色、边距、对齐方式等样式。 JavaScript…...

浅谈Kubernetes(K8s)之RC控制器与RS控制器

1.RC控制器 1.1RC概述 Replication Controller 控制器会持续监控正在运行的Pod列表&#xff0c;并保证相应类型的Pod的数量与期望相符合&#xff0c;如果Pod数量过少&#xff0c;它会根据Pod模板创建新的副本&#xff0c;反之则会删除多余副本。通过RC可实现了应用服务的高可用…...

如何在 openAI Sora 上生成视频内容

近期OpenAI 推出了我们期待已久的视频生成模型 Sora。能够生成包含多个角色、特定类型的动作以及主体和背景的精确细节的复杂场景。该模型不仅了解用户在提示中要求的内容&#xff0c;还了解这些内容在物理世界中的存在方式。 如何在 openAI Sora 上生成视频内容 使用Sora 视频…...

【Oracle11g SQL详解】日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等

日期和时间函数&#xff1a;SYSDATE、TO_DATE、TO_CHAR 等 在 Oracle 数据库中&#xff0c;日期和时间函数用于处理日期和时间数据。它们在记录创建时间、分析时间间隔、格式化输出等场景中非常重要。本文将详细讲解常用的日期和时间函数及其应用。 一、SYSDATE&#xff1a;获…...

STM32 串口收发文本数据包

单片机学习&#xff01; 目录 前言 一、文本数据包格式 二、串口收发文本数据包代码 三、代码解析 3.1 标志位清除 3.2 数据包接收 四、代码问题改进 总结 前言 本文介绍了串口收发文本数据包程序设计的思路并详解代码作用。 一、文本数据包格式 文本数据包的格式的定义…...

铭记一次项目重大事故

在程序的世界里&#xff0c;bug 就像隐藏在暗处的小怪兽&#xff0c;时不时跳出来捣乱。而职业生涯中&#xff0c;总有那么一个或几个 bug 让我们刻骨铭心。它或许让项目差点夭折&#xff0c;或许让你熬了无数个通宵&#xff0c;或许有着离奇的出现方式和曲折的解决过程。无论是…...

AUTOSAR 汽车开放系统架构

AUTOSAR 官网 AUTOMOTIVE OPEN SYSTEM ARCHITECTURE AUTOSAR (AUTomotive Open System ARchitecture) is a global partnership of leading companies in the automotive and software industry to develop and establish the standardized software framework and open E/E …...

从零用java实现 小红书 springboot vue uniapp (2)主页优化

前言 移动端演示 http://8.146.211.120:8081/#/ 前面的文章我们基本完成了主页的布局 今天我们具体的去进行实现 并且分享我开发时遇到的问题 首先先看效果 java仿小红书主页 实现效果为 1.顶端全屏切换 2.上划加载更多 3.下拉当前页整体刷新 顶端全屏切换我们选择 gui-switch…...

打电话玩手机识别-支持YOLO,COCO,VOC格式的标记,超高识别率可检测到手持打电话, 非接触式打电话,玩手机自拍等

打电话玩手机识别-支持YOLO&#xff0c;COCO&#xff0c;VOC格式的标记&#xff0c;超高识别率可检测到手持打电话&#xff0c; 非接触式打电话&#xff0c;玩手机自拍等1275个图片。 手持打电话&#xff1a; 非接触打电话 玩手机 数据集下载 yolov11:https://download.csdn…...

黑马程序员Java项目实战《苍穹外卖》Day12

苍穹外卖-day12 课程内容 工作台Apache POI导出运营数据Excel报表 功能实现&#xff1a;工作台、数据导出 工作台效果图&#xff1a; 数据导出效果图&#xff1a; 在数据统计页面点击数据导出&#xff1a;生成Excel报表 1. 工作台 1.1 需求分析和设计 1.1.1 产品原…...

实现SpringBoot项目嵌入其他项目

很多时候我们需要在项目里面嵌入其他项目或者被其他项目嵌入&#xff0c;如我们开发一个开源项目b&#xff0c;用户需要在自己的项目a嵌入b项目&#xff0c;使用b项目的功能&#xff0c;而且要实现a项目工作最小化&#xff0c;最好实现引入即用。 1.定义b项目的自定义配置 …...

海康威视摄像头RTSP使用nginx推流到服务器直播教程

思路&#xff1a; 之前2020年在本科的时候&#xff0c;由于项目的需求需要将海康威视的摄像头使用推流服务器到网页进行直播。这里将自己半个月琢磨出来的步骤给大家发一些。切勿转载&#xff01;&#xff01;&#xff01;&#xff01; 使用网络摄像头中的rtsp协议---------通…...

【自动化】requirements.txt

1.是什么&#xff1f; 用于列出项目依赖的所有Python包及其版本。这使得其他开发者可以轻松地安装与你的项目兼容的环境&#xff0c;或者在不同的机器上复制相同的开发环境。 2.如何编写requirements.txt 手动创建 格式&#xff1a; 包名版本号 在终端home命令自动生成 创建r…...

C++ 中多态性在实际项目中的应用场景

背景与需求 在一个图形绘制软件中&#xff0c;需要绘制多种不同的图形&#xff0c;如圆形、矩形、三角形等。每个图形都有自己的绘制方法&#xff0c;但是它们都可以被看作是一个抽象的 “图形” 概念&#xff0c;并且都有一个共同的操作&#xff0c;比如绘制&#xff08;draw&…...

手机租赁系统开发指南一站式服务流程解析

内容概要 手机租赁系统的开发是一个复杂但有趣的过程&#xff0c;像搭建乐高一样&#xff0c;只要找到合适的模块&#xff0c;就能打造出一个宾至如归的租赁平台。在这部分&#xff0c;我们将对开发流程的整体结构进行简要概述&#xff0c;并指出每个环节的重要性。 首先&…...

基于Couchbase的数据构建方案:数仓分层

初步方案是将公共层和报表层分别放在不同的bucket中&#xff0c;这种设计从存储和访问优化的角度是合理的&#xff0c;但仍有以下细节需要考虑&#xff1a; 1. 数仓公共层设计&#xff08;origin bucket&#xff09; 合理性分析&#xff1a; 将ODS、DWD、DWS层的数据放在一个b…...

Linux中的线程

目录 线程的概念 进程与线程的关系 线程创建 线程终止 线程等待 线程分离 原生线程库 线程局部存储 自己实现线程封装 线程的优缺点 多线程共享与独占资源 线程互斥 互斥锁 自己实现锁的封装 加锁实现互斥的原理 死锁 线程同步 线程的概念 回顾进程相关概念 …...

【保姆级】Mac如何安装+切换Java环境

本文从如何下载不同版本的JDK,到如何丝滑的切换JDK,以及常见坑坑的处理方法,应有尽有,各位看官走过路过不要错过~~~ 下载⏬ 首先上官网: https://www.oracle.com/ 打不开的话可以使用下面👇这个中文的 https://www.oracle.com/cn/java/technologies/downloads/a…...

leetcode 31 Next Permutation

题意 找到下一个permutation是什么&#xff0c;对于一个数组[1&#xff0c;2&#xff0c;3]&#xff0c;下一个排列就是[1, 3, 2] 链接 https://leetcode.com/problems/next-permutation/ 思考 首先任何一个permutation满足一个性质&#xff0c;从某个位置往后一定是降序。…...

从RocketMQ到Dubbo:自研中间件技术的崛起

目录 一. 宝兰德 BES 中间件&#xff08;BES - Business Enterprise Server&#xff09; 二. TongWeb 中间件 三. 阿里巴巴 RocketMQ 四. 京东 JStorm 五. 华为 GaussDB 六. 华为 FusionInsight 七. 百度 Tinker 八. 中科曙光 Kylin 九. 滴滴 Druid 一. 宝兰德 BES 中间…...

计算机键盘简史 | 键盘按键功能和指法

注&#xff1a;本篇为 “计算机键盘简史 | 键盘按键功能和指法” 相关文章合辑。 英文部分机翻未校。 The Evolution of Keyboards: From Typewriters to Tech Marvels 键盘的演变&#xff1a;从打字机到技术奇迹 Introduction 介绍 The keyboard has journeyed from a humb…...

考研两三题

283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 本题解法&#xff1a;使用双指针 解法一&#xff1a; 如上图&#xff0c;在一开始slow指向-1&#xff0c;fast指向数组起始位&#xff0c;进入while循环&#xff0c;保证fast不越界&#xff0c;因为代码中fast会自增&#…...

CentOS8或docker镜像centos8更换镜像源

因为 CentOS 8 已经结束生命周期&#xff0c;原来的镜像源不可用了。我们需要将镜像源改为 CentOS 8 的替代源。 在容器中运行以下命令&#xff1a; 首先备份原有的源 cd /etc/yum.repos.d/ mkdir backup mv *.repo backup/ 创建新的源文件 cat > /etc/yum.repos.d/Cent…...

集成方案 | Docusign + 泛微,实现全流程电子化签署!

本文将详细介绍 Docusign 与泛微的集成步骤及其效果&#xff0c;并通过实际应用场景来展示 Docusign 的强大集成能力&#xff0c;以证明 Docusign 集成功能的高效性和实用性。 在现代企业运营中&#xff0c;效率和合规性是至关重要的。泛微作为企业级办公自动化和流程管理的解决…...

知乎数据分析面试题及参考答案

请阐述大数定理和中心极限定理的内容及其在数据分析中的应用。 大数定理是指在随机试验中,每次出现的结果不同,但是大量重复试验出现的结果的平均值却几乎总是接近于某个确定的值。简单来说,当样本量足够大的时候,样本均值会趋近于总体均值。例如,抛硬币试验,当抛硬币的次…...

8.Vue------如何重新加载子组件key属性----vue知识积累

在子组件中使用key属性是一种强制重新渲染子组件的有效方法。‌通过改变key属性的值&#xff0c;Vue会 销毁旧组件并创建新组件&#xff0c;从而实现组件的重新加载。这种方法适用于需要完全重新渲染子组件&#xff0c; 包括其内部状态和生命周期钩子的场景&#xff0c;特别是…...

C语言动态内存管理

1.为什么要有动态内存分配 内存开辟方式: int val 20;//在栈空间上开辟四个字节 char arr[10] {0};//在栈空间上开辟10个字节的连续空间开辟空间的方式特点 空间开辟大小是固定德的数组在申明的时候&#xff0c;必须指明数组的长度&#xff0c;数组空间一旦确定了大小不能…...

【蓝桥杯备战】Day 1

1.基础题目 LCR 018.验证回文串 给定一个字符串 s &#xff0c;验证 s 是否是 回文串 &#xff0c;只考虑字母和数字字符&#xff0c;可以忽略字母的大小写。 本题中&#xff0c;将空字符串定义为有效的 回文串 。 示例 1: 输入: s "A man, a plan, a canal: Panama…...

电子应用设计方案-51:智能镜子系统方案设计

智能镜子系统方案设计 一、引言 智能镜子作为一种新兴的智能家居设备&#xff0c;将传统镜子与现代科技相结合&#xff0c;为用户提供了丰富的功能和便捷的体验。本方案旨在设计一款功能强大、用户友好、外观美观的智能镜子系统。 二、系统概述 1. 系统目标 - 提供清晰的镜面…...

[2015~2024]SmartMediaKit音视频直播技术演进之路

技术背景 2015年&#xff0c;因应急指挥项目需求&#xff0c;我们实现了RTMP推送音视频采集推送&#xff08;采集摄像头和麦克风数据&#xff09;模块&#xff0c;在我们做好了RTMP推送模块后&#xff0c;苦于没有一个满足我们毫秒级延迟诉求的RTMP播放器&#xff0c;于是第一…...

图片添加水印的实验原理,实验代码,实验现象

一、图片添加水印的实验原理 1. 选择水印类型 可见水印&#xff1a;这些水印可以直接被肉眼看到&#xff0c;通常用于防止未经授权的使用。它们可以是文字、标志或图案等形式&#xff0c;并且放置在图像的显著位置。不可见水印&#xff1a;这类水印不容易被察觉&#xff0c;但…...

Python Web 开发案例解析

一、Flask 基础应用案例 &#xff08;一&#xff09;项目搭建与初始化 环境准备 安装 Python 解释器&#xff0c;确保版本符合 Flask 要求&#xff0c;如 Python 3.6 及以上。使用pip安装 Flask 库&#xff0c;命令为pip install flask。可以创建虚拟环境&#xff0c;如python…...

JPG 转 PDF:免费好用的在线图片转 PDF 工具

JPG 转 PDF&#xff1a;免费好用的在线图片转 PDF 工具 在日常工作和生活中&#xff0c;我们经常需要将图片转换为 PDF 格式。无论是制作电子文档、准备演示材料&#xff0c;还是整理照片集&#xff0c;将图片转换为 PDF 都是一个常见的需求。今天为大家介绍一款完全免费、无需…...

代码随想录44天

1143.最长公共子序列 class Solution:def longestCommonSubsequence(self, s: str, t: str) -> int:n, m len(s), len(t)cache # 缓存装饰器&#xff0c;避免重复计算 dfs 的结果&#xff08;记忆化&#xff09;def dfs(i: int, j: int) -> int:if i < 0 or j <…...

C语言-详细解答-重组字符串并16进制转10进制

1.题目要求 2.代码实现 #include <stdio.h> #include <ctype.h> #include <string.h>int hexToDec(char hex[]) {int len strlen(hex);int base 1;int dec 0;for (int i len - 1; i > 0; i--) {if (isdigit(hex[i])) {dec (hex[i] - 0) * base;} e…...

scala列表

1 不可变 List 说明 &#xff08;1&#xff09;List 默认为不可变集合 &#xff08;2&#xff09;创建一个 List&#xff08;数据有顺序&#xff0c;可重复&#xff09; &#xff08;3&#xff09;遍历 List &#xff08;4&#xff09;List 增加数据 &#xff08;5&#…...

医疗急救技能大赛理论题库

医疗急救技能大赛理论题库 题型包括&#xff1a;A1 型题 400题&#xff0c;A2 型题40题&#xff0c;A3/A4 型40 题&#xff0c; B 型题 80 题 &#xff0c;X 型题 160 题&#xff0c;判断题 80 题。 一、A1 型题:共计400 题 &#xff08;即最佳回答题&#xff0c;它由一个叙…...

深入浅出WebRTC—ULPFEC

FEC 通过在发送端添加额外的冗余信息&#xff0c;使接收端即使在部分数据包丢失的情况下也能恢复原始数据&#xff0c;从而减轻网络丢包的影响。在 WebRTC 中&#xff0c;FEC 主要有两种实现方式&#xff1a;ULPFEC 和 FlexFEC&#xff0c;FlexFEC 是 ULPFEC 的扩展和升级&…...

SQL 在线格式化 - 加菲工具

SQL 在线格式化 打开网站 加菲工具 选择“SQL 在线格式化” 或者直接访问 https://www.orcc.online/tools/sql 输入sql&#xff0c;点击上方的格式化按钮即可 输入框得到格式化后的sql结果...

到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率

中心可以根据任务到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率 服务率和到达率 中心可以根据任务到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率服务率(Service Rate)到达率(Arrival Rate)控制参数实现负载均衡的方法在云计…...

【Golang】Go语言编程思想(六):Channel,第四节,Select

使用 Select 如果此时我们有多个 channel&#xff0c;我们想从多个 channel 接收数据&#xff0c;谁来的快先输出谁&#xff0c;此时应该怎么做呢&#xff1f;答案是使用 select&#xff1a; package mainimport "fmt"func main() {var c1, c2 chan int // c1 and …...

认证插件介绍

本文档是针对 UOS 登录器插件给出开发指南&#xff0c;目的是为了让开发人员了解如何在 UOS 登录器上增加一种自定义认证方式&#xff0c;对插件接口做了详细说明以及实战练习。 文章目录 一、认证插件可以做什么&#xff1f;二、认证流程三、术语说明四、安全性五、可靠性六、…...