2025 蓝桥杯省赛c++B组个人题解

news2025/4/13 11:06:03

声明

本题解为退役蒻苟所写,不保证正确性,仅供参考。

花了大概2个半小时写完,感觉比去年省赛简单,难度大概等价于 codeforces dv4.5 吧

菜鸡不熟悉树上背包,调了一个多小时

题目旁边的是 cf 预测分

所有代码均以通过洛谷蓝桥杯同步题

A题

算一下弧长和半径即可得 1576

B题

正解 2 1022 m o d    1 0 9 + 7 = 781448427 2^{1022} \mod10^9+7=781448427 21022mod109+7=781448427

C: 可分解的正整数 (1000)

问题描述
判断给定正整数能否表示为长度≥3的连续整数序列之和。

输入格式

  • 第一行:正整数N。
  • 第二行:N个正整数A1,A2,…,AN。

输出格式
可分解的正整数数量。

样例输入

3
3 6 15

样例输出
3

评测用例规模

1≤N≤105,1≤Ai≤109。

题解

打一下表发现 106 以内所有数除了 1 以外都可以这样分解,因此答案即为非 1 的数的数量

#include <bits/stdc++.h>

using namespace std;
void solve()
{
    int n;
    cin >> n;
    int ans = n;
    for (int i = 0; i < n; i++)
    {
        int x;
        cin >> x;
        if (x == 1)
            ans--;
    }
    cout << ans << "\n";
}
int main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int _ = 1;
    // std::cin >> _;
    while (_--)
    {
        solve();
    }
    return 0;
}

D: 产值调整 (1000)

问题描述
三矿山产值A,B,C每年按以下规则调整K次:

  1. A ′ = ⌊ ( B + C ) / 2 ⌋ A′=⌊(B+C)/2⌋ A=⌊(B+C)/2
  2. B ′ = ⌊ ( A + C ) / 2 ⌋ B′=⌊(A+C)/2⌋ B=⌊(A+C)/2
  3. C ′ = ⌊ ( A + B ) / 2 ⌋ C′=⌊(A+B)/2⌋ C=⌊(A+B)/2

输入格式

  • 第一行:测试用例数T。
  • 每行:A,B,C,K。

输出格式
调整后的A,B,C。

样例输入

2
10 20 30 1
5 5 5 3

样例输出

25 20 15
5 5 5

评测用例规模

1 ≤ T ≤ 1 0 5 1≤T≤10^5 1T105 1 ≤ A , B , C , K ≤ 1 0 9 1≤A,B,C,K≤10^9 1A,B,C,K109

题解

观察发现 A,B,C 都在向 A + B + C 3 \frac{A+B+C}{3} 3A+B+C 收敛,且速度很快,所以模拟一下直到三个相等即可。

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
void solve()
{
    ll A, B, C, K;
    cin >> A >> B >> C >> K;
    while (K--)
    {
        ll NA = (B + C) >> 1;
        ll NB = (A + C) >> 1;
        ll NC = (A + B) >> 1;
        A = NA, B = NB, C = NC;
        if (A == B && B == C)
            break;
    }
    cout << A << " " << B << " " << C << "\n";
}
int main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int _ = 1;
    std::cin >> _;
    while (_--)
    {
        solve();
    }
    return 0;
}

E: 画展布置 (1200)

问题描述
从N幅画中选M幅排列,最小化艺术价值变化程度 L = ∑ M − 1 i = 1 ∣ B i + 1 2 − B i 2 ∣ L=∑^{i=1}_{M−1}|B_{i+1}^2−B_{i}^2| L=M1i=1Bi+12Bi2

输入格式

  • 第一行:N和M。
  • 第二行:N个艺术价值A1,A2,…,AN。

输出格式
L的最小值。

评测用例规模

2 ≤ M ≤ N ≤ 1 0 5 ; 1 ≤ A i ≤ 1 0 5 2≤M≤N≤10^5;1≤Ai≤10^5 2MN105;1Ai105

题解

题目要求从 N 幅画中选出 M 幅,并排成一列,使得艺术价值变化程度 L = ∑ M − 1 i = 1 ∣ B i + 1 2 − B i 2 ∣ L=∑^{i=1}_{M−1}|B_{i+1}^2−B_{i}^2| L=M1i=1Bi+12Bi2 最小。

注意到只要将选中的画按某种顺序排列,如果能让各个相邻画作的 “平方值” 单调变化,则 L = B M 2 − B 1 2 L=B_M^2−B_1^2 L=BM2B12,

其中 B12 和 BM2 分别是选中画作中最小和最大的平方值。

因为对于任意一个选定的集合,无论中间顺序如何,若将它们重新排序为“平方值”递增的顺序,其变化总和必定为 max ⁡ ( B i 2 ) − min ⁡ ( B i 2 ) \max(B_i^2)−\min(B_i^2) max(Bi2)min(Bi2)

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
void solve()
{
    int N, M;
    cin >> N >> M;
    vector<ll> A(N), S(N);
    for (int i = 0; i < N; i++)
    {
        cin >> A[i];
        S[i] = A[i] * A[i];
    }

    sort(S.begin(), S.end());
    ll ans = LLONG_MAX;
    for (int i = 0; i + M - 1 < N; i++)
    {
        ll diff = S[i + M - 1] - S[i];
        if (diff < ans)
            ans = diff;
    }

    cout << ans << "\n";
}
int main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int _ = 1;
    // std::cin >> _;
    while (_--)
    {
        solve();
    }
    return 0;
}

F: 水质检测 (1600)

问题描述
在2×n河床上添加最少检测器,使所有检测器连通。

输入格式

  • 两行:每行长度为n的字符串,#表示检测器,.表示空白。

输出格式
最少需添加的检测器数。

样例输入

.# #.....#
.# .# .#...

样例输出
5

评测用例规模

1≤n≤106

题解

贪心解不可行,正解是dp。

对于每一列 i,我们先根据输入得到该列的检测器状态。

  • 若第 1 行第 i 个位置为 #,则该列有上检测器,对应二进制位 1, s t a [ i ] ∣ = 1 sta[i]|=1 sta[i]=1
  • 若第 2 行第 i 个位置为 #,则该列有下检测器,对应二进制位 2, s t a [ i ] ∣ = 2 sta[i]|=2 sta[i]=2

我们可以在每一列中选择是否添加检测器。由于我们要求连通,我们考虑只在从最左侧出现强制检测器的列到最右侧出现强制检测器的列这一连续区间内填充检测器。

在每一列,我们可以的最终状态是:

在该列放置检测器的情况用一个二进制数表示(1 表示上有检测器,2 表示下有检测器,3 表示两行都有);我们规定空列是不允许的,因为中断列会导致连通性断裂。因此在每一列的状态可以是 1、2 或 3。

设区间 [L, R] 为所有存在强制检测器的列的最小与最大列号。如果没有任何强制检测器,则答案为 0 。

d p [ i ] [ j ] dp[i][j] dp[i][j] 表示从列 L 到列 i,将第 i 列状态设为 j 且保证前后连通时的最小添加数。状态 j 只能取 1、2、3,但必须满足与 sta[i] 匹配。

转移方程:
对于第 i 列,遍历其允许状态 j,再枚举前一列 i−1 允许的状态 k 满足 j&k≠0 ,则

d p [ i ] [ j ] = m i n d p [ i − 1 ] [ k ] + c a l c ( j , k ) dp[i][j]=min{dp[i−1][k]+calc(j,k)} dp[i][j]=mindp[i1][k]+calc(j,k)

设状态 j 取值为 1、2、3。在列 k,若我们选择状态 j,则需要补充的检测器数量为

c a l c ( j , k ) = p o p c o u n t ( k ) − p o p c o u n t ( s t a [ j ] ) calc(j,k)=popcount(k)−popcount(sta[j]) calc(j,k)=popcount(k)popcount(sta[j])

其中 popcount 是状态中 1 的个数。例如:若 sta[i] = 0,状态 1 或 2 费用为 1,状态 3 费用为 2;若 sta[i] = 1,则状态 1 费用为 0,状态 3 费用为 1;以此类推。

#include <bits/stdc++.h>

using namespace std;

const int inf = 0x3f3f3f3f;

void solve()
{
    string s1, s2;
    cin >> s1 >> s2;
    int n = s1.size();
    vector<int> sta(n);
    for (int i = 0; i < n; i++)
    {
        if (s1[i] == '#')
            sta[i] |= 1;
        if (s2[i] == '#')
            sta[i] |= 2;
    }
    int L = n, R = -1;
    for (int i = 0; i < n; i++)
    {
        if (sta[i] != 0)
        {
            L = min(L, i);
            R = max(R, i);
        }
    }
    if (R == -1)
    {
        cout << 0 << "\n";
        return;
    }
    vector<vector<int>> dp(n, vector<int>(4, inf));
    auto calc = [&](int p, int t) -> int
    {
        int cnt = 0;
        if (t & 1)
            cnt++;
        if (t & 2)
            cnt++;
        int num = 0;
        if (sta[p] & 1)
            num++;
        if (sta[p] & 2)
            num++;
        return cnt - num;
    };

    auto check = [&](int x, int t) -> bool
    {
        return (t & sta[x]) == sta[x] && (t != 0);
    };

    for (int i = 1; i < 4; i++)
    {
        if (check(L, i))
            dp[L][i] = calc(L, i);
    }

    for (int i = L + 1; i <= R; i++)
    {
        for (int j = 1; j < 4; j++)
        {
            if (!check(i, j))
                continue;
            int add = calc(i, j);
            for (int k = 1; k < 4; k++)
            {
                if (!check(i - 1, k))
                    continue;
                if ((k & j) == 0)
                    continue;
                dp[i][j] = min(dp[i][j], dp[i - 1][k] + add);
            }
        }
    }
    int ans = inf;
    for (int i = 1; i < 4; i++)
    {
        if (check(R, i))
            ans = min(ans, dp[R][i]);
    }

    cout << ans << "\n";
}
int main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int _ = 1;
    // std::cin >> _;
    while (_--)
    {
        solve();
    }
    return 0;
}

G: 生产车间 (1800)

问题描述
树形结构设备网络,叶节点生产材料,根节点打包成品。调整节点使所有节点产能不超限,求根节点最大打包量。

输入格式

  • 第一行:设备数n。
  • 第二行:各节点权值w1,w2,…,wn。
  • 后续n−1行:树边。

输出格式
根节点的最大成品量。

样例输入

9
9 7 3 7 1 6 2 2 7
1 2
1 3
2 4
2 5
2 6
6 7
6 8
6 9

样例输出
8

评测用例规模

1 ≤ n ≤ 1 0 3 ; 1 ≤ w i ≤ 1 0 3 1≤n≤10^3;1≤wi≤10^3 1n103;1wi103

题解

跑一下树上背包即可,需要使用bitset优化。

对于每个节点 u,构造一个布尔数组 f [ u ] [ x ] f[u][x] f[u][x] f [ u ] [ x ] = t r u e f[u][x]=true f[u][x]=true 表示在节点 u 被保留的情况下,通过对其子树的合理保留或删除,可以使得从 u 的所有子树传上来的材料总量达到 x, x≤w[u] 。
具体的状态转移为:

叶节点:只有两种选择

  • 删除该节点,贡献 0(即 f [ u ] [ 0 ] = t r u e f[u][0]=true f[u][0]=true
  • 保留该节点,则其实际“产出”就是 w[u] 。

内部节点:初始时没有选择任何子树,状态为 0;
遍历每个子节点 v,其返回的状态集合 g 表示了子树可能传上的材料量,利用类似于背包的思路将不同子节点的贡献累加,但总和不能超过该节点的 w[u] 。

最终,在根节点处, f[1] 为打包能力,答案即为根节点的状态数组中能达到的最大流量值

#include <bits/stdc++.h>

using namespace std;
void solve()
{
    int n;
    cin >> n;
    vector<int> w(n + 1);
    for (int i = 1; i <= n; i++)
    {
        cin >> w[i];
    }
    vector<vector<int>> adj(n + 1);
    for (int i = 1; i <= n - 1; i++)
    {
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    adj[1].push_back(0);
    function<vector<bool>(int, int)> dfs = [&](int u, int fa) -> vector<bool>
    {
        vector<bool> f(w[u] + 1);

        if (adj[u].size() == 1)
        {
            f[0] = true;
            if (w[u] <= w[u])
                f[w[u]] = true;
            return f;
        }
        f[0] = true;
        for (auto &v : adj[u])
        {
            if (v == fa)
                continue;
            vector<bool> g = dfs(v, u);
            vector<bool> h(w[u] + 1);
            for (int i = 0; i <= w[u]; i++)
            {
                if (!f[i])
                    continue;
                for (int j = 0; j < g.size(); j++)
                {
                    if (g[j] && i + j <= w[u])
                        h[i + j] = true;
                }
            }
            f.swap(h);
        }
        return f;
    };

    vector<bool> res = dfs(1, 0);
    int ans = 0;
    for (int i = 0; i <= w[1]; i++)
    {
        if (res[i])
            ans = max(ans, i);
    }
    cout << ans << "\n";
}

int main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int _ = 1;
    // std::cin >> _;
    while (_--)
    {
        solve();
    }
    return 0;
}

H: 装修报价 (1600)

问题描述

老王计划装修房子,于是联系了一家装修公司。该公司有一套自动报价系统,只需用户提供 N 项装修相关费用 A1,A2,…,AN,系统便会根据这些费用生成最终的报价。

然而,当老王提交数据后,他发现这套系统的运作方式并不透明:系统只会给出一个最终报价,而不会公开任何运算过程或中间步骤。公司对此解释称,这套系统会依据某种内部算法,在每对相邻数字之间插入 +(加法)、−(减法)或 ⊕(异或)运算符,并按照特定优先级规则计算结果:异或运算优先级最高,其次是加减。

为了验证系统报价是否合理,老王决定模拟其运作方式,尝试每种可能的运算符组合,计算出所有可能出现的结果的总和。如果最终报价明显超出这个范围,他就有理由怀疑系统存在异常或误差。

现在,请你帮老王算出所有可能的结果的总和。由于该总和可能很大,你只需提供其对 109+7 取余后的结果即可。

输入格式

  • 第一行输入一个整数 N,表示装修相关费用的项数。
  • 第二行输入 N 个非负整数 A1,A2,…,AN,表示各项费用。

输出格式

输出一个整数,表示所有可能的总和对 109+7 取余后的结果。

示例输入

3
0 2 5

示例输出

11

示例说明

对于输入样例中的三个数 A=[0,2,5],所有可能的运算符组合共有 9 种。计算结果如下:

  • 0⊕2⊕5=7
  • 0⊕2+5=7
  • 0⊕2−5=−3
  • 0+2⊕5=7
  • 0+2+5=7
  • 0+2−5=−3
  • 0−2⊕5=−7
  • 0−2+5=3
  • 0−2−5=−7

所有结果的总和为:

7+7+(−3)+7+7+(−3)+(−7)+3+(−7)=11

11 对 109+7 取余后的值依然为 11,因此,输出结果为 11。

评测用例规模

1 ≤ N ≤ 1 0 5 , 1 ≤ A i ≤ 1 0 9 1≤N≤10^5,1≤A_i≤10^9 1N105,1Ai109

题解

注意到:

  • 在所有 ⊕ 连续的段内,其结果就是该段内所有数的异或值;
  • 在相邻段之间的运算符为加或减,由于加减具有线性性质(先计算异或段,后做加减运算)可以发现,最终结果实际上为各“段”值的加权和,其中只有最左边那一段的符号“固定为 +”,而后续各段由于加减符号正负会相互抵消后求和。

具体看“分段”:

  • 定义:设在相邻位置处如果选用非 ⊕ 运算符,则视为“断开”,形成新段。
  • 因为每个位置独立选运算符,所以可以将所有可能的运算符组合看成对 N−1 个空位的选择,每个位置可以“接续”(即选 ⊕)或“断开”(即选加或减),而“断开”时又有 2 种符号选择。

观察发现:

  • 若整个序列中没有断开,则只有一段,其结果为
    G=A1⊕A2⊕⋯⊕AN
  • 若第一个断开出现在位置 j(也就是说从 A1 到 Aj 连续使用 ⊕),则第一段的“段值”为
    G1=A1⊕A2⊕⋯⊕Aj

而后面不论如何选择(剩余位置随意),在加减阶段由于正负相互抵消,其对总和的贡献在对所有符号取和时,只有第一段的值会“留下”。 具体地:

  • 固定第一断开出现在 j 的情况下,对于前 j−1 个间隙,必须全选 ⊕(1 种方式);
  • 第 j 个空位选断开,有 2 种符号选择;
  • 对于位置 j + 1 , … , N − 1 j+1,…,N−1 j+1,,N1 每个空位可任意选(3 种方式),总数为 3 N − 1 − j 3^{N−1−j} 3N1j.

故满足“第一断开位置为 j "的方案数为 2 ⋅ 3 N − 1 − j 2⋅3^{N−1−j} 23N1j

对于这些方案,最终计算(加减累加时)会固定地把第一段 G1 加入结果中(其他段各自正负总和为 0)。

于是,把所有方案按照是否出现断开以及第一断开的位次分情况讨论,最后所有可能最终结果的总和 S 为

无断开 S = G 无断开 + ∑ N − 1 j = 1 ( 2 ⋅ 3 N − 1 − j ) ⋅ ( A 1 ⊕ A 2 ⊕ ⋯ ⊕ A j ) S=G_{无断开}+∑^{j=1}_{N−1}(2⋅3^{N−1−j})⋅(A_1⊕A_2⊕⋯⊕A_j) S=G无断开+N1j=1(23N1j)(A1A2Aj).

这里 G = A 1 ⊕ A 2 ⊕ ⋯ ⊕ A N G=A_1⊕A_2⊕⋯⊕A_N G=A1A2AN

#include <bits/stdc++.h>

using namespace std;

using ll = long long;

const ll mod = 1000000007;
ll qmi(ll x, ll k, ll p = mod)
{
    x %= p;
    ll res = 1;
    while (k > 0)
    {
        if (k & 1)
            res = (res * x) % p;
        x = (x * x) % p;
        k >>= 1;
    }
    return res;
}
void solve()
{
    int n;
    cin >> n;
    vector<ll> a(n + 1);
    vector<ll> preXor(n + 1, 0);
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        preXor[i] = preXor[i - 1] ^ a[i];
    }
    vector<ll> p3(n);
    p3[0] = 1;
    for (int i = 1; i < n; i++)
    {
        p3[i] = (p3[i - 1] * 3) % mod;
    }
    ll ans = preXor[n] % mod;
    for (int i = 1; i < n; i++)
    {
        ll t = ((2ll * p3[n - 1 - i]) % mod * preXor[i]) % mod;
        ans = (ans + t) % mod;
    }
    cout << (ans % mod + mod) % mod << "\n";
}
int main()
{
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int _ = 1;
    // std::cin >> _;
    while (_--)
    {
        solve();
    }
    return 0;
}

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

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

相关文章

Centos7.9 升级内核,安装RTX5880驱动

系统镜像下载 https://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 系统安装步骤省略 开始安装显卡驱动 远程登录查看内核 [root192 ~]# uname -a Linux 192.168.119.166 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x8…

Xdocreport实现根据模板导出word

只使用freemaker生成简单的word文档很容易&#xff0c;但是当word文档需要插入动态图片&#xff0c;带循环数据&#xff0c;且含有富文本时解决起来相对比较复杂&#xff0c;但是使用Xdocreport可以轻易解决。 Xdocreport既可以实现文档填充也可以实现文档转换&#xff0c;此处…

当当平台商品详情接口设计与调用指南

当当平台商品详情接口设计与调用指南 接口名称 GET /api/product/detail 图书商品核心信息查询接口 请求参数说明 参数名称 类型 是否必填 说明 isbn string 是 国际标准书号(支持13位/10位) product_id string 否 平台内部商品编号&#xff08;与…

sql server分析表大小

使用自动存储过程查询 EXEC sp_spaceused YourTableName; rows&#xff1a;表中的行数。reserved&#xff1a;表占用的总空间&#xff08;包括数据和索引&#xff09;。data&#xff1a;表数据占用的空间。index_size&#xff1a;索引占用的空间。unused&#xff1a;未使用的空…

《AI大模型应知应会100篇》第13篇:大模型评测标准:如何判断一个模型的优劣

第13篇&#xff1a;大模型评测标准&#xff1a;如何判断一个模型的优劣 摘要 近年来&#xff0c;大语言模型&#xff08;LLMs&#xff09;在自然语言处理、代码生成、多模态任务等领域取得了显著进展。然而&#xff0c;随着模型数量和规模的增长&#xff0c;如何科学评估这些模…

【区块链安全 | 第三十七篇】合约审计之获取私有数据(一)

文章目录 私有数据访问私有数据实例存储槽Solidity 中的数据存储方式1. storage(持久化存储)定长数组变长数组2. memory(临时内存)3. calldata可见性关键字私有数据存储风险安全措施私有数据 私有数据(Private Data)通常指的是只对特定主体可见或可访问的数据,在区块链…

项目管理(高软56)

系列文章目录 项目管理 文章目录 系列文章目录前言一、进度管理二、配置管理三、质量四、风险管理五、真题总结 前言 本节主要讲项目管理知识&#xff0c;这些知识听的有点意思啊。对于技术人想创业&#xff0c;单干的都很有必要听听。 一、进度管理 二、配置管理 三、质量 四…

OpenCV边缘检测方法详解

文章目录 引言一、边缘检测基础概念边缘类型 二、OpenCV中的边缘检测方法1. Sobel算子2. Scharr算子3. Laplacian算子4. Canny边缘检测 三、性能比较与选择建议四、总结 引言 边缘检测是计算机视觉和图像处理中的基础技术&#xff0c;它能有效识别图像中物体的边界&#xff0c…

Linux:shell运行原理+权限

1.shell的运行原理 如果我们打开了命令终端或者是xshell进行远程登录服务器&#xff0c;就会看到命令行&#xff0c;如下图所示&#xff1a; 这个命令行本身也是系统中一个运行起来的程序&#xff0c;它用来接收用户的输入&#xff0c;帮用户来执行指令&#xff0c;将运行结果展…

【LeetCode Solutions】LeetCode 160 ~ 165 题解

CONTENTS LeetCode 160. 相交链表&#xff08;简单&#xff09;LeetCode 162. 寻找峰值&#xff08;中等&#xff09;LeetCode 164. 最大间距&#xff08;中等&#xff09;LeetCode 165. 比较版本号&#xff08;中等&#xff09; LeetCode 160. 相交链表&#xff08;简单&#…

Openssl升级至openssl9.8p1含全部踩坑内容

1、安装依赖包基础条件 yum install gcc yum install gcc-c yum install perl yum install perl-IPC-Cmd yum install pam yum install pam-devel sudo yum install perl-Data-Dumper 问题一&#xff1a;提示yum不可用 镜像源问题更换阿里源即可 wget -O /etc/yum.repos.d/…

二战蓝桥杯所感

&#x1f334; 前言 今天是2025年4月12日&#xff0c;第十六届蓝桥杯结束&#xff0c;作为二战的老手&#xff0c;心中还是颇有不甘的。一方面&#xff0c;今年的题目比去年简单很多&#xff0c;另一方面我感觉并没有把能拿的分都拿到手&#xff0c;这是我觉得最遗憾的地方。不…

查看手机在线状态,保障设备安全运行

手机作为人们日常生活中不可或缺的工具&#xff0c;承载着沟通、工作、娱乐等多种功能。保障手机设备的安全运行是我们每个人都非常重要的任务&#xff0c;而了解手机的在线状态则是其中的一环。通过挖数据平台提供的在线查询工具&#xff0c;我们可以方便快捷地查询手机号的在…

#关于数据库中的时间存储

✅ 一、是否根据“机器当前时区”得到本地时间再转 UTC&#xff1f; 结论&#xff1a;是的&#xff0c;但仅对 TIMESTAMP 字段生效。 数据库&#xff08;如 MySQL&#xff09;在插入 TIMESTAMP 类型数据时&#xff1a; 使用当前会话的时区&#xff08;默认跟随系统时区&#…

第16届蓝桥杯省赛python B组个人题解

文章目录 前言ABCDEFGH 前言 仅个人回忆&#xff0c;不保证正确性 貌似都是典题&#xff0c;针对python的长代码模拟题也没有&#xff0c;一小时速通了&#xff0c;希望不要翻车。 更新&#xff1a;B、G翻车了。。 A 答案&#xff1a;103 B 应该是按长度排序&#xff0c;然后…

lvs+keepalived+dns高可用

1.配置dns相关服务 1.1修改ip地址主机名 dns-master: hostnamectl hostname lvs-master nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.107/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes nmcli c up ens160dns-salve: h…

Spark RDD相关概念

Spark运行架构与核心组件 1.Spark运行梁构 spark运行架构包括master和slave两个主要部分。master负责管理整个集群的作业任务调度&#xff0c;而slave则负责实际执行任务。 dirver是Spark驱动器节点&#xff0c;负责执行Spark任务中的main方法&#xff0c;将用户程序转换成作业…

SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记

目录 前言 背景与需求 代码改进方案 运行过程&#xff1a; 1、Run​编辑 2、过程&#xff1a; 3、过程时间线&#xff1a; 4、最终效果展示&#xff1a; 总结与展望 前言 机器学习缺点之一&#xff1a;即不可解释性。最近&#xff0c;我在使用stable diffusion v1.5 Co…

【ROS2】行为树:BehaviorTree

1、简介 与状态机不同,行为树强调执行动作,而不是状态之间的转换。 行为树是可组合的。可以重复使用简单的行为来构建复杂的行为。 在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。 ROS2的导航框架Navigation2中引入了行为树来组织机器人的工作流…

《JVM考古现场(十八):造化玉碟·用字节码重写因果律的九种方法》

"鸿蒙初判&#xff01;当前因果链突破十一维屏障——全体码农修士注意&#xff0c;《JVM考古现场&#xff08;十八&#xff09;》即将渡劫飞升&#xff01;" 目录 上卷阴阳交缠 第一章&#xff1a;混沌初开——JVM因果律的量子纠缠 第二章&#xff1a;诛仙剑阵改—…