Codeforces Round 954 (Div. 3) A~F

news2024/11/24 2:08:30

A.X Axis(暴力)

题意:

X X X轴( 1 ≤ x i ≤ 10 1\leq x_i\leq 10 1xi10)上有三个点,其整数坐标分别为 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3。您可以选择 X X X轴上任何一个整数坐标为 a a a的点。请注意,点 a a a可能与 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3重合。设 f ( a ) f(a) f(a)是给定点到点 a a a的总距离。求 f ( a ) f(a) f(a)的最小值。

a a a b b b之间的距离等于 ∣ a − b ∣ |a-b| ab。例如,点 a = 5 a=5 a=5 b = 2 b=2 b=2之间的距离为 3 3 3

分析:

暴力枚举一下所有可能,取最小值即可。

代码:

#include<bits/stdc++.h>

typedef long long LL;
using namespace std;

void solve() {
    LL a, b, c;
    cin >> a >> b >> c;
    LL ans = 100;
    for (LL i = 0; i <= 10; i++) {
        ans = min(ans, abs(i - a) + abs(i - b) + abs(i - c));
    }
    cout << ans << endl;
}

int main() {
    int t;
    cin >> t;
    while (t--)
        solve();
    return 0;
}

B.Matrix Stabilization(模拟)

题意:

给你一个大小为 n × m n\times m n×m的矩阵,其中行的编号从上到下为 1 1 1 n n n,列的编号从左到右为 1 1 1 m m m。位于第 i i i行和第 j j j列交点上的元素用 a i j a_{ij} aij表示。

考虑稳定矩阵 a a a的算法:

  1. 找到单元格 ( i , j ) (i,j) (i,j)使其值严格大于所有相邻单元格的值。如果没有这样的单元格,则终止算法。如果有多个这样的单元格,则选择 i i i值最小的单元格;如果仍有多个单元格,则选择 j j j值最小的单元格。
  2. 设置 a i j = a i j − 1 a_{ij}=a_{ij}-1 aij=aij1
  3. 转到步骤 1 1 1

在此问题中,如果单元格 ( a , b ) (a,b) (a,b) ( c , d ) (c,d) (c,d)有一个共同的边,即 ∣ a − c ∣ + ∣ b − d ∣ = 1 |a-c|+|b-d|=1 ac+bd=1,那么这两个单元格就被视为相邻单元格。

您的任务是在执行稳定算法后输出矩阵 a a a。可以证明这种算法不可能运行无限次迭代。

分析:

按题意进行模拟。从上到下,从左到右枚举元素,每次如果此元素严格大于周围的元素,就赋值为周围四个元素中最大的。因为操作以后还是没有严格小于周围的元素,所以操作后不会使得前面的元素不符合要求。

注意,边上的元素取最大值时可能会超出边界,所以每组数据要把边界外的元素都设为 0 0 0

代码:

#include<bits/stdc++.h>

typedef long long LL;
using namespace std;
const int N = 2005;
LL a[N][N];

void solve() {
    LL n, m;
    cin >> n >> m;
    for (LL i = 0; i <= n + 1; i++) {
        a[i][0] = 0;
        a[i][m + 1] = 0;
    }
    for (LL i = 0; i <= m + 1; i++) {
        a[0][i] = 0;
        a[n + 1][i] = 0;
    }
    for (LL i = 1; i <= n; i++) {
        for (LL j = 1; j <= m; j++) {
            cin >> a[i][j];
        }
    }
    for (LL i = 1; i <= n; i++) {
        for (LL j = 1; j <= m; j++) {
            a[i][j] = min(a[i][j], max(a[i - 1][j], max(a[i + 1][j], max(a[i][j - 1], a[i][j + 1]))));
            cout << a[i][j] << ' ';
        }
        cout << endl;
    }
}

int main() {
    int t;
    cin >> t;
    while (t--)
        solve();
    return 0;
}

C.Update Queries(排序)

题意:

下面是一个简单的问题。给你一个长度为 n n n的字符串 s s s(由小写拉丁字母组成),以及一个长度为 m m m( 1 ≤ i n d i ≤ n 1\leq ind_i\leq n 1indin)的索引数组 i n d ind ind和一个长度为 m m m的字符串 c c c(由小写拉丁字母组成)。然后,按顺序执行更新操作,即在第 i i i个操作中,设置 s i n d i = c i s_{ind_i}=c_i sindi=ci。请注意,所有的 m m m操作都是从第一个操作到最后一个操作。

当然,如果改变数组 i n d ind ind中索引的顺序和/或字符串 c c c中字母的顺序,会得到不同的结果。如果数组 i n d ind ind中的索引和字符串 c c c中的字母顺序可以随意改变,那么在进行 m m m次更新操作后,可以得到的字典序最小的字符串 s s s

当且仅当满足以下条件之一时,字符串 a a a在字典序上小于字符串 b b b

  • a a a b b b的前缀,但 a ≠ b a\neq b a=b
  • a a a b b b不同的第一个位置,字符串 a a a中的符号在字母表中的位置比字符串 b b b中的相应符号早。

分析:

我们发现 i d n idn idn c c c都可以重新排列,考虑对其进行排序。如果 i d n idn idn的元素全部满足两两不相同,则直接在排序后按顺序填入即可,因为这样保证字典序小的排在了前面。对于相同的元素,先插入的元素会被后面的覆盖掉,只需要考虑最后一次操作,而前面的操作则用字典序最大的来顶替即可。

代码:

#include<bits/stdc++.h>

typedef long long LL;
using namespace std;
const int N = 1e5 + 5;
int idn[N];
string s, t;

void solve() {
    LL n, m;
    t = "";
    cin >> n >> m >> s;
    for (int i = 1; i <= m; i++)
        cin >> idn[i];
    for (int i = 1; i <= m; i++) {
        char tmp;
        cin >> tmp;
        t += tmp;
    }
    sort(idn + 1, idn + 1 + m);
    sort(t.begin(), t.end());
    deque<char> q;
    for (int i = 0; i < t.size(); i++)
        q.push_back(t[i]);
    for (int i = 1; i <= m; i++) {
        if (idn[i] != idn[i - 1]) {
            s[idn[i] - 1] = q.front();
            q.pop_front();
        } else {
            q.pop_back();
        }
    }
    cout << s << endl;
}

int main() {
    int T;
    cin >> T;
    while (T--)
        solve();
    return 0;
}

D.Mathematical Problem(数学)

题意:

给你一个长度 n > 1 n\gt 1 n>1的字符串 s s s,由从 0 0 0 9 9 9的数字组成。您必须在这个字符串中准确插入 n − 2 n-2 n2 + + +(加法)符号或 × \times ×(乘法)符号,才能形成一个有效的算术表达式。

在本题中,符号不能放在字符串 s s s的第一个字符之前或最后一个字符之后,也不能连续写入两个符号。此外,请注意字符串中数字的顺序不能改变。以 s = 987009 s=987009 s=987009为例:

  • 从这个字符串可以得到以下算术表达式: 9 × 8 + 70 × 0 + 9 = 81 9\times 8+70\times 0+9=81 9×8+70×0+9=81, 98 × 7 × 0 + 0 × 9 = 0 98\times 7\times 0+0\times 9=0 98×7×0+0×9=0, 9 + 8 + 7 + 0 + 09 = 9 + 8 + 7 + 0 + 9 = 33 9+8+7+0+09=9+8+7+0+9=33 9+8+7+0+09=9+8+7+0+9=33。请注意,数字 09 09 09被认为是有效的,并被转换为 9 9 9
  • 从该字符串中无法得到以下算术表达式: + 9 × 8 × 70 + 09 +9\times 8\times 70+09 +9×8×70+09(符号只能放在数字之间)、 98 × 70 + 0 + 9 98\times 70+0+9 98×70+0+9(因为有 6 6 6个数字,所以必须正好有 4 4 4个符号)。

算术表达式的结果是根据数学规则计算出来的–首先进行所有乘法运算,然后是加法运算。您需要找出在给定的字符串 s s s中插入恰好 n − 2 n-2 n2个加法或乘法符号所能得到的最小结果。

分析:

本题我们分情况考虑

考虑 n = 2 n=2 n=2的情况,不能加运算符,如果第一个字符为 0 0 0,则输出第二个字符,否则输出 s s s

考虑 n = 3 n=3 n=3且有 0 0 0 0 0 0在中间的情况,答案为第一个和第三个字符乘积或者相加中较小的一个。

其他长度的情况:如果有 0 0 0,则将所有运算符置为乘,最后结果就是 0 0 0。如果没有 0 0 0,则将 s s s中所有不为 1 1 1的数统计求和。此时的求和有 n − 1 n-1 n1个运算符,其中涉及到 1 1 1的运算符全为*,不涉及 1 1 1的运算符全为+。此时需要去掉一个运算符,再次遍历 s s s,依此考虑将 s s s中任意两个相邻的字符组合成一个二位数字,看哪个组合最后得到的结果最小,取最小值即可。

代码:

#include<bits/stdc++.h>

typedef long long LL;
using namespace std;
const LL MAXN = 0x3f3f3f3f;
string s;

void solve() {
    int n;
    cin >> n >> s;
    if (n == 2) {
        if (s[0] == '0')
            cout << s[1] << endl;
        else
            cout << s << endl;
    } else if (n == 3 && s[1] == '0') {
        cout << min(s[0] + s[2] - '0' * 2, (s[0] - '0') * (s[2] - '0')) << endl;
    } else if (s.find('0') != std::string::npos) {
        cout << "0" << endl;
    } else {
        int sum = 0;
        for (const auto &x: s) {
            if (x > '1') {
                sum += x - '0';
            }
        }
        int ans = MAXN;
        for (int i = 0; i < n - 1; ++i) {
            int num = stoi(s.substr(i, 2));
            ans = min(ans, sum - (s[i] == '1' ? 0 : s[i] - '0') - (s[i + 1] == '1' ? 0 : s[i + 1] - '0') + num);
        }
        cout << ans << endl;
    }
}


int main() {
    int t;
    cin >> t;
    while (t--)
        solve();
    return 0;
}

E.Beautiful Array(数据结构)

题意:

给你一个整数数组 a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1,a2,,an和一个整数 k k k。您需要用最少的运算使数组变得美丽。

在进行操作前,可以随意对数组元素进行洗牌。对于一次操作,可以进行以下操作:

  • 选择一个索引 1 ≤ i ≤ n 1\leq i\leq n 1in.
  • 生成 a i = a i + k a_i=a_i+k ai=ai+k

如果所有的 1 ≤ i ≤ n 1\leq i\leq n 1in都是 b i = b n − i + 1 b_i=b_{n-i+1} bi=bni+1,那么数组 b 1 , b 2 , … , b n b_1,b_2,\ldots,b_n b1,b2,,bn是美丽的。

求使数组美丽所需的最小运算次数,或者输出不可能。

分析:

首先利用map a a a中的出现偶数次的元素去掉。我们发现如果一个数能通过另一个数相加若干个 k k k得到,则这两个数%k的余数是相等的。将剩下的元素 % k \%k %k存到map<int,vector>中,遍历这个新的map,对vector排序。如果vector中的元素数量是偶数,那么可以将相邻的两个vector作为一组进行 + k +k +k变换。如果vector中的元素数量是奇数,那么这样的vector不能超过 1 1 1个,维护一个前缀和后缀和来讨论vector中哪个元素作为回文中心,不参与到这种配对的计算中。

代码:

#include<bits/stdc++.h>

typedef long long LL;
using namespace std;

void solve() {
    int n, k;
    cin >> n >> k;
    map<int, int> mapp;
    for (int i = 0; i < n; i++) {
        int t;
        cin >> t;
        mapp[t]++;
    }
    vector<int> a;
    for (const auto &[x, y]: mapp) {
        if (y & 1) {
            a.push_back(x);
        }
    }
    if ((int) a.size() <= 1) {
        cout << "0" << endl;
        return;
    }
    map<int, vector<int>> rec;
    for (int i = 0; i < a.size(); ++i) {
        int t = a[i];
        rec[t % k].push_back(t);
    }
    int cnt = 0;
    LL ans = 0;
    for (auto &[x, cur]: rec) {
        bool ok = true;
        if (cur.size() & 1) {
            cnt++;
            ok = false;
            if (cnt > 1) {
                cout << "-1" << endl;
                return;
            }
        }
        sort(cur.begin(), cur.end());
        if (ok) {
            for (int i = 1; i < cur.size(); i += 2) {
                ans += (cur[i] - cur[i - 1]) / k;
            }
        } else if (cur.size() > 1) {
            int m = (int) cur.size();
            vector<LL> pref(m);
            vector<LL> suff(m);
            pref[1] = cur[1] - cur[0];
            for (int i = 3; i < m; i += 2) {
                pref[i] = pref[i - 2] + cur[i] - cur[i - 1];
            }
            suff[m - 2] = cur[m - 1] - cur[m - 2];
            for (int i = m - 4; i >= 0; i -= 2) {
                suff[i] = suff[i + 2] + cur[i + 1] - cur[i];
            }
            LL minn = min(pref[m - 2], suff[1]);
            for (int i = 2; i < m - 2; i += 2) {
                minn = min(minn, pref[i - 1] + suff[i + 1]);
            }
            ans += minn / k;
        }
    }
    cout << ans << endl;
}

int main() {
    int t;
    cin >> t;
    while (t--)
        solve();
    return 0;
}

F.Non-academic Problem(联通分量)

题意:

给你一个连通的无向图,其顶点用 1 1 1 n n n之间的整数编号。你的任务是尽量减少图中存在路径的顶点 1 ≤ u < v ≤ n 1\leq u\lt v\leq n 1u<vn对的数量。为了实现这一目标,你可以从图形中删除一条边。

请找出顶点对的最小数目!

分析:

整个图是连通的,删除边双内的边并不会影响连通性,删除桥边会变成两个连通块,一个大小为 x x x另一个则为 n − x n−x nx

对于一个大小为 x x x的连通块,编号最小的点有另外 x − 1 x−1 x1个点与其对应,以此类推,因此满足条件的点对数量是:
∑ i = 1 x − 1 i = x ( x − 1 ) 2 \sum_{i=1}^{x-1}i=\frac{x(x-1)}{2} i=1x1i=2x(x1)

考虑将图缩点为边双连通分量,然后只枚举桥边(即树边),对于所有情况取一个最小值即可。

代码:

#include<bits/stdc++.h>

typedef long long LL;
using namespace std;
const int N = 100010;
const int M = 200010;
int h[N], sz[N], dfn[N], low[N], id[N], szedcc[N], idx, n, m, timestamp, cntedcc;
stack<int> stk;
vector<int> G[N];
set<LL> S;
LL ans;

struct Edge {
    int to, nxt;
} e[M];

void add(int a, int b) {
    e[idx] = {b, h[a]};
    h[a] = idx++;
}

void tarjan(int u, int from) {
    stk.push(u);
    dfn[u] = low[u] = ++timestamp;

    for (int i = h[u]; i; i = e[i].nxt) {
        int to = e[i].to;

        if (!dfn[to]) {
            tarjan(to, i);
            low[u] = min(low[u], low[to]);
        } else if (i != (from ^ 1))
            low[u] = min(low[u], dfn[to]);
    }

    if (low[u] == dfn[u]) {
        ++cntedcc;
        int y;
        do {
            y = stk.top();
            stk.pop();
            id[y] = cntedcc;
            szedcc[cntedcc]++;
        } while (y != u);
    }
}

LL calc(LL x) {
    return x * (x - 1) / 2;
}

void dfs(int u, int f) {
    sz[u] = szedcc[u];
    for (int to: G[u]) {
        if (to == f)
            continue;
        dfs(to, u);
        sz[u] += sz[to];
        ans = min(ans, calc(sz[to]) + calc(n - sz[to]));
    }
}

int main() {
    int t;
    cin >> t;
    while (t--) {
        cin >> n >> m;
        idx = 2;
        timestamp = cntedcc = 0;
        S.clear();
        for (int i = 0; i <= n; i++) {
            h[i] = dfn[i] = szedcc[i] = sz[i] = id[i] = low[i] = 0;
            vector<int>().swap(G[i]);
        }
        for (int i = 1, a, b; i <= m; i++) {
            cin >> a >> b;
            add(a, b);
            add(b, a);
        }
        for (int i = 1; i <= n; i++) {
            if (!dfn[i])
                tarjan(i, -1);
        }
        for (int u = 1; u <= n; u++) {
            for (int i = h[u]; i; i = e[i].nxt) {
                int to = e[i].to;
                int A = id[u], B = id[to];
                if (A < B)
                    swap(A, B);

                if (id[u] != id[to]) {
                    LL hash = 1ll * A * N + B;
                    if (S.count(hash))
                        continue;
                    S.insert(hash);
                    G[id[u]].emplace_back(id[to]);
                    G[id[to]].emplace_back(id[u]);
                }
            }
        }
        ans = calc(n);
        dfs(1, 0);
        cout << ans << endl;
    }
    return 0;
}

赛后交流

在比赛结束后,会在交流群中给出比赛题解,同学们可以在赛后查看题解进行补题。

群号: 704572101,赛后大家可以一起交流做题思路,分享做题技巧,欢迎大家的加入。

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

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

相关文章

免费恢复微信好友的聊天记录(已删除的好友不能恢复)

非常简单,适用于未删除的微信好友的聊天记录恢复,支持导出 1、下载楼月微信聊天记录导出恢复助手 - 导出手机微信聊天记录 2、官方原文教程链接&#xff1a;官方原文教程链接https://www.louyue.com/weixin.htm

高考填报志愿,要做到知己知彼兼顾平衡

寒窗苦读&#xff0c;无非就是希望能够考上一所理想的大学&#xff0c;不过自从高考改革以后&#xff0c;高考结束后只是第一阶段&#xff0c;接下来第二阶段应对高考填报志愿也同样重要。 如何选择合适的院校、专业&#xff0c;考生和家长都需要做好充足的准备&#xff0c;在收…

视频组合其他内容生成二维码的方法,多内容二维码的生成技巧

现在通过二维码来播放视频的使用场景越来越多&#xff0c;通过这种方式能够更加简单便捷的让用户获取内容&#xff0c;无需下载视频内容&#xff0c;有效提升用户的体验效果。那么在制作视频二维码时&#xff0c;怎么加入其他的内容呢&#xff0c;比如图片、文件、文本、音频等…

springboot校BA篮球网站-计算机毕业设计源码29210

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;校BA篮球网站当然也不能排除在外。校BA篮球网站是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#x…

【LeetCode】五、哈希表相关:统计重复元素 + 找不同

文章目录 1、哈希表结构2、Java中的哈希表3、leetcode217&#xff1a;统计重复元素4、leetcode389&#xff1a;找不同5、leetcode496&#xff1a;下一个更大元素 1、哈希表结构 又叫散列表&#xff0c;存键值对&#xff0c;将key用哈希函数转为数组下标索引 当两个不同的key经…

【代码安全】如何通过实现代码加密与魔改Python,防止代码泄露、恶意窃取

如何通过实现代码加密与魔改Python&#xff0c;防止代码泄露、恶意窃取 文章目录 如何通过实现代码加密与魔改Python&#xff0c;防止代码泄露、恶意窃取前言概述代码运行演示Step 0: 正常代码运行Step 1: 代码加密Step 2: 加密代码在魔改环境运行Step 3: 加密代码在正常环境运…

数字孪生如何赋能智慧加油站?

在当今数字化转型的浪潮中&#xff0c;智慧城市的构建正以前所未有的速度推进&#xff0c;而智慧加油站作为智慧城市生态系统的重要组成部分&#xff0c;其升级转型显得尤为重要。随着国家“十四五”规划对智慧城市和数字化建设的明确指引&#xff0c;以及“碳达峰、碳中和”目…

51WORLD发布电力行业输电网自动生成与GIM解析技术,引领智慧电网加速进化!

电力行业是国民经济发展的重要支柱性产业。近年来&#xff0c;5G、大数据、人工智能、数字孪生等新技术新应用的高速发展&#xff0c;数字化、智能化已成为传统电力行业转型发展的重要方向。 大趋势下&#xff0c;以智能电网等为代表的新业态、新模式、新技术蓬勃兴起&#xf…

PyTorch入门:探索Tensor的基本操作(2)

torch.cat&#xff08;&#xff09; a torch.zeros((2,4)) b torch.ones((2,4)) out torch.cat((a,b), dim1) print(out)运行结果如下&#xff1a; tensor([[0., 0., 0., 0., 1., 1., 1., 1.],[0., 0., 0., 0., 1., 1., 1., 1.]])torch.stack&#xff08;&#xff09;&…

分析零信任三大产品板块的发展

众所周知&#xff0c;增强型身份管理&#xff08;IAM&#xff09;、软件定义边界&#xff08;SDP&#xff09;和微隔离&#xff08;MSG&#xff09;是零信任的三大支撑技术。在中国市场&#xff0c;零信任的产品板块也按照这三大技术进行划分。2023年&#xff0c;IAM、SDP和MSG…

PageOffice国产版在线编辑word文件

PageOffice国产版支持统信UOS、银河麒麟等国产操作系统。调用客户端WPS在线编辑word、excel、ppt等文件。在线编辑效果与本地WPS一致。如图所示&#xff1a; web系统集成pageofficeV6.0国产版的文档&#xff1a;PageOfficeV6.0国产版最简集成代码(Springboot) PageOffice最简集…

linux的安全技术和防火墙

一、安全技术 1.入侵检测系统&#xff1a;特点式不阻断网络访问&#xff0c;主要式提供报警和事后监督&#xff0c;不主动介入&#xff0c;默默的看着你&#xff08;相当于360安全卫士&#xff09; 2.入侵防御系统&#xff1a;透明模式工作&#xff0c;对数据包&#xff0c;网…

Micrometer+ZipKin分布式链路追踪

目录 背景MicrometerMicrometer与ZipKin之间的关系专业术语分布式链路追踪原理 ZipKin安装下载 MicrometerZipKin 案例演示相关文献 背景 一个系统页面上的按钮点击到结果反馈&#xff0c;在微服务框架里&#xff0c;是由N个服务组成返回结果&#xff0c;中间可能经过a->b-…

【数据结构与算法】哈希表 详解

开放定址哈希表的存储结构是什么样的&#xff1f; 开放定址哈希表的存储结构&#xff1a; #define SUCCESS 1 #define UNSUCCESS 0 #define DUPLICATE -1int hashsize[] {997, /*...*/}; // 哈希表容量递增表&#xff0c;一个合适的素数序列typedef struct {ElemType *elem;…

Anisble Playbook

文章目录 一、Playbook简介三种常见的数据格式Playbook特点YAML语言介绍 二、Playbook核心组件host组件remote_user组件task列表和action组件gather_factsHandlers notifyignore_errors 三、playbook命令playbook命令tags 标签 四、Playbook中的变量setup模块中的变量Playbook命…

【Unity】Excel配置工具

1、功能介绍 通过Excel表配置表数据&#xff0c;一键生成对应Excel配置表的数据结构类、数据容器类、已经二进制数据文件&#xff0c;加载二进制数据文件获取所有表数据 需要使用Excel读取的dll包 2、关键代码 2.1 ExcelTool类 实现一键生成Excel配置表的数据结构类、数据…

linux系统中vim ls grep等命令无法使用

linux突然vim ls grep等命令无法使用 系统配置路径被修改导致无法使用 添加路径 执行以下命令 export PATH$PATH:/root/bin export PATH$PATH:/usr/sbin

如何在信创领域中做好防泄露

随着信息技术的迅猛发展&#xff0c;数据安全和防泄露成为了企业和政府机构面临的重大挑战。在信创&#xff08;Creative and Innovative Intelligent Products&#xff09;领域中&#xff0c;沙箱技术以其独特的隔离和保护机制&#xff0c;成为了防泄露的关键手段之一。 一、沙…

一文带你了解什么是【点击劫持】

点击劫持&#xff0c;意思就是你点击网页的时候&#xff0c;有人劫持你&#xff0c;对没错&#xff0c;劫持你的信息&#xff0c;甚至劫持你的马内&#xff0c;劫持你的理想&#xff0c;劫持你的肉体&#xff0c;劫持你的灵魂。就是这么可怕。 目录 1 如何实现假网站 1.1 if…

祝贺!FISCO BCOS伙伴科大讯飞获国家科学技术进步奖一等奖

6月24日&#xff0c;2023年度国家科学技术奖励大会在京召开&#xff0c;金链盟理事单位、开源工作组成员单位、FISCO BCOS产业应用合作伙伴科大讯飞作为第一完成单位的“多语种智能语音关键技术及产业化”项目获得国家科学技术进步奖一等奖。 这是深度学习引发全球人工智能浪潮…