ZOI Round 1 & 新春联欢赛

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

『ZOI Round #1』官方题解

T1 - 奇妙数

70 分解法

若直接枚举 L 与 R 之间的奇妙数,将因子 2,3,5,7 从当前枚举的数中除去。若结果为 1,说明该数只有这 4 个质因子,是一个奇妙数。否则不是。

例如 60 是一个奇妙数。将因子 2 从中去除,得 60÷2÷2=15。再将因子 3 从中去除,得 15÷3=5。再将因子 55 从中去除,得 5÷5=1。最后将因子 7 从中去除,由于 60 中不含因子 7,忽略此操作。结果为 1,故这是一个奇妙数。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
    ll l, r, ans = 0; cin >> l >> r;
    for (ll i = l; i <= r; i++) {
        ll t = i;
        while (t % 2 == 0) t /= 2;
        while (t % 3 == 0) t /= 3;
        while (t % 5 == 0) t /= 5;
        while (t % 7 == 0) t /= 7;
        if (t == 1) ans++;
    }
    cout << ans; 
    return 0;
}

100 分解法

考虑到 a,b,c,d 会很小,故可以直接使用四重循环枚举 a,b,c,da,b,c,d,然后算出 2a×3b×5c×7d,看它是否在 L 与 R 之间即可。

需要注意,a,b,c,d 可以是零。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll pp(ll a, ll b) {
    ll res = 1;
    for (ll i = 1; i <= b; i++) {
        res *= a;
    }
    return res;
}
int main() {
    ll l, r, ans = 0;
    cin >> l >> r;
    for (ll i2 = 0; i2 <= 35; i2++) {
        for (ll i3 = 0; i3 <= 20; i3++) {
            for (ll i5 = 0; i5 <= 14; i5++) {
                for (ll i7 = 0; i7 <= 12; i7++) {
                    ll now = pp(2, i2) * pp(3, i3) * pp(5, i5) * pp(7, i7);
                    if (l <= now && now <= r) {
                        ans++;
                    }
                }
            }
        }
    }
    cout << ans;
    return 0;
}

T2 - 等地铁

40 分解法

对于每一次操作,我们算出地铁从首发站发出后需要多长时间到第 x 站,即 A1+A2+⋯+Ax−1。对发车间隔时间进行一系列取模操作即可算出答案。

需要特判的是,t 分钟时,首班地铁还没有到第 x 站,这是答案即为首班车到这里的时间(即 A1+A2+⋯+Ax−1​)减去 t。

#include <bits/stdc++.h>
using namespace std;

#define ll long long

ll a[114514];

ll pre(ll x) {
    ll res = 0;
    for (ll i = 1; i <= x; i++) {
        res += a[i];
    }
    return res;
}

int main() {

    ll n, k, q;
    cin >> n >> k >> q;
    for (ll i = 2; i <= n; i++) {
        cin >> a[i];
    }
    while (q--) {
        ll x, t;
        cin >> x >> t;
        ll ans = t - pre(x);
        if (ans >= 0) {
            ans %= k;
            ans = k - ans;
            ans %= k;
        } else  {
            ans = pre(x) - t;
        }
        cout << ans <<endl;
    }
    return 0;
}

100 分解法

可以发现,每次询问计算的 A1+A2+⋯+Ax−1​ 是数列前缀和。这里考虑前缀和优化,可以避免多次计算同样的东西。

对于每次询问的求和操作,我们可以预处理出一个前缀和。这样每次询问的时间复杂度就降为 O(1) 了。

#include <bits/stdc++.h>
using namespace std;

#define ll long long

ll pre[114514];

int main() {

    ll n, k, q;
    cin >> n >> k >> q;
    for (ll i = 2; i <= n; i++) {
        cin >> pre[i];
        pre[i] += pre[i - 1];
    }
    while (q--) {
        ll x, t;
        cin >> x >> t;
        ll ans = t - pre[x];
        if (ans >= 0) {
            ans %= k;
            ans = k - ans;
            ans %= k;
        } else  {
            ans = pre[x] - t;
        }
        cout << ans <<endl;
    }
    return 0;
}

T3 - 俄罗斯方块

10 分解法

注意到子任务 3 中,N=1。

记录 A 部分和 B 部分的左右端点,分类讨论进行计算即可。

#include <bits/stdc++.h>
using namespace std;

#define ll long long
char c[55];

int main() {

    ll n, m;
    cin >> n >> m;
    for (ll i = 1; i <= m; i++) {
        cin >> c[i];
    }
    ll la = 0, lb = 0, ra = 0, rb = 0;
    for (ll i = 1; i <= m; i++) {
        if (c[i] == 'A') {
            ra = i;
            if (la == 0) {
                la = i;
            }
        }
        if (c[i] == 'B') {
            rb = i;
            if (lb == 0) {
                lb = i;
            }
        }
    }
    if (ra <= lb) {
        bool ok = 1;
        for (ll i = ra; i <= lb; i++) {
            if (c[i] == '#') {
                ok = 0;
                break;
            } 
        }
        if (ok) {
            cout << "Yes" << endl;
            cout << lb - la << endl;
        } else {
            cout << "No" << endl;
            cout << -1 << endl;
        }
    } else {
        bool ok = 1;
        for (ll i = rb; i <= la; i++) {
            if (c[i] == '#') {
                ok = 0;
                break;
            } 
        }
        if (ok) {
            cout << "Yes" << endl;
            cout << la - lb << endl;
        } else {
            cout << "No" << endl;
            cout << -1 << endl;
        }
    }

    return 0;
}

100 分解法

由于数据范围很小,考虑暴力的 BFS,需要一定的代码能力。

BFS 的队列中存储当前方块的每一个方格的位置(使用 vector 存储),以及当前移动步数。对于转移,我们枚举四个移动方向,并算出移动后各方格的位置,判断是否合法(即该位置是否在游戏区域中且不是墙)。对于每一个 BFS 的状态,与 B 部分进行比较,若发现相同,直接输出当前移动步数,结束程序。

#include <bits/stdc++.h>
using namespace std;

#define ll long long

ll n, m;
ll dx[] = {0, 1, 0, -1};
ll dy[] = {1, 0, -1, 0}; 
char a[60][60];

struct pos{
    ll x, y;
    bool operator < (const pos &qw) const {
        if (x != qw.x) {
            return x < qw.x;
        }
        return y < qw.y;
    }
};
struct node{
    vector<pos> v;
    ll t;
};

bool in(ll xx, ll yy) {
    if (xx < 1 || xx > n) {
        return 0;
    }
    if (yy < 1 || yy > m) {
        return 0;
    }
    return 1;
}

vector<pos> v1, v2;
queue<node> q;
bool vis[60][60];

int main() {

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> m; 
    for (ll i = 1; i <= n; i++) {
        for (ll j = 1; j <= m; j++) {
            cin >> a[i][j];
            if (a[i][j] == 'A') {
                v1.push_back({i, j});
            }
            if (a[i][j] == 'B') {
                v2.push_back({i, j});
            }
        }
    }
    q.push({v1, 0});
    vis[v1[0].x][v1[0].y] = 1;
    while (!q.empty()) {
        node h = q.front();
        q.pop();
        bool ok = 1;
        for (ll i = 0; i < (ll)v2.size(); i++) {
            if (h.v[i].x != v2[i].x || h.v[i].y != v2[i].y) {
                ok = 0;
                break;
            } 
        }
        if (ok) {
            cout << "Yes" << endl;
            cout << h.t << endl;
            return 0;
        }
        for (ll i = 0; i < 4; i++) {
            vector<pos> v3;
            bool ok2 = 1;
            for (pos u : h.v) {
                if (!in(u.x + dx[i], u.y + dy[i]) || a[u.x + dx[i]][u.y + dy[i]] == '#') {
                    ok2 = 0;
                    break;
                }
                v3.push_back({u.x + dx[i], u.y + dy[i]});
            }
            if (!ok2 || vis[v3[0].x][v3[0].y]) {
                continue;
            }
            vis[v3[0].x][v3[0].y] = 1;
            q.push({v3, h.t + 1});

        }
    }
    cout << "No" << endl;
    cout << -1 << endl;
    return 0;
}

T4 - 数轴

此题不展示部分分解法。

100 分解法

首先,可以不用考虑 N:如果将整个数轴向左平移 N 个单位长度,xi​ 变成 xi​−N,答案不会发生任何变化。

现在考虑如何计算每次询问。假设 ti​ 秒全部向右走,那么最终小 Z 会来到点 ti​。如果 ti​<xi​,方案数肯定为 0。否则需要将他的终点向左调整 ti​−xi​ 个单位长度。将一次向右走换成一次向左走,可以将终点向左调整 2 个单位长度,于是需要选择 2ti​−xi​​ 个向右走换成向左走(如果 2∤ti​−xi​ 或 ti−xi2>ti2ti​−xi​​>ti​,方案数为 0)。所以方案数为 (2ti​−xi​​ti​​)。

#include <bits/stdc++.h>
using namespace std;

#define ll long long

ll p = 1e9 + 7ll;
ll fac[1919810];

ll quickpow(ll n, ll m) {
    if (m == 1ll) {
        return n % p;
    }
    if (m == 0ll) {
        return 1ll % p;
    }
    if (m % 2ll) {
        ll ret = (quickpow(n, m / 2ll)) % p;
        return ret * ret % p * n % p;
    } else {
        ll ret = (quickpow(n, m / 2ll)) % p;
        return ret * ret % p;
    }
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    fac[0] = 1;
    for (ll i = 1; i <= 1000005; i++) {
        fac[i] = i * fac[i - 1] % p;
    }

    ll n, tc;
    cin >> n >> tc;
    while (tc--) {
        ll x, y;
        cin >> x >> y;
        if ((y - n + x) % 2) {
            cout << 0 << endl;
            continue;
        }
        y = (y - n + x) / 2;
        if (y < 0 || x - y < 0) {
            cout << 0 << endl;
            continue;
        }
        ll ans = fac[x] % p * quickpow(fac[x - y] % p * fac[y] % p, p - 2ll) % p;
        cout << ans << endl;
    }

    return 0;
}

总结

本次比赛对标 CSP-J,难度较为简单。

祝各位 OIer 们在信息的道路上越走越远!

完结撒花!

Human3.6M 数据集介绍及下载 360 万张 3D 人体姿势和对应图像11 名专业演员(6 男 5 女)7 个场景(讨论、吸烟、拍照以及打电话等等) 阅读详情

相关推荐

CASS3D实战:高效三维房屋与地形采集绘制技巧

本文详细介绍了CASS3D在三维房屋与地形采集绘制中的高效技巧,包括智能绘房功能、不规则结构处理、特殊构件快速绘制及地形数据采集策略。通过实战案例和进阶操作指南,帮助用户快速掌握CASS3D的核心功能,提升三维采集与绘制效率。

weixin_29216049的博客 866

ZOI Round 1 & 新春联欢赛 U392419 『ZOI Round #1』等地铁

ZOI Round 1 & 新春联欢赛 U392419 『ZOI Round #1』等地铁

hhqxjh的博客 742

关于42步进电机驱动——基于STM32 HAL库实现

我找了好多资料,好多关于42步进电机的都是文档,这么文档都需要积分,需要积分就算了内容还非常差,浪费时间和电脑的内存。关于大部分是基于Arduino和51去驱动的 42步进电机驱动硬件如下: 首先你要了解步进电机的驱动原理,我也不啰嗦了,请看这边博客: 二相四线,四相五线,四相六线步进电机接线及驱动方法 , 看完这篇你就知道驱动和接线的原理了。 起初我也为如何接线烦恼,因为有些博客在讲述这些问题的时候没有讲的很透彻。 方法如下: ①用万用表调到欧姆档,用其中一个表笔搭在一个引脚上,依次测其它.

Jodan132的博客 1万+

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 187

实战篇【2】-H3C防火墙开局基础配置

本篇文章为“H3C防火墙开局基础配置”,主要涵盖配置管理地址、聚合端口、安全区域、安全策略、静态路由、ACL,WEB和SSH远程管理、Console、SNMP、NTP时钟、日志主机等内容,对比交换机配置开局,增加两处配置,安全区域和安全策略。方便调试人员远程管理、调试。

weixin_47402139的博客 1万+

浏览器Cookie迁移实战:从Chrome导出导入登录态全攻略

Cookie是浏览器保存的会话凭证,服务端通过Set-Cookie将登录态种在本地。迁移Cookie本质上是把服务端认可的会话标识搬到新环境,从而免去重复输入账号密码和二次验证的麻烦。在换电脑、切浏览器或重装系统时,掌握Cookie的导出导入技术能显著提升效率。Chrome与Edge同属Chromium内核,存储结构相似,但字段差异(如Domain、SameSite、Secure)常导致迁移失败。通过浏览器扩展或CDP脚本可实现跨浏览器登录态迁移,适用于内网后台、开发环境等场景。本文从原理到实践,梳理Coo

weixin_42533120的博客 339

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 287

VisionPro脚本实战:用C#替代QuickBuild,让复杂定位项目代码更清爽

本文探讨了如何通过C#脚本重构VisionPro复杂定位项目,替代臃肿的QuickBuild架构。通过实战案例展示了脚本化开发如何减少60%代码量并提升35%运行效率,使项目更易维护。文章详细介绍了环境搭建、多模板定位重构及高级技巧,帮助开发者突破QuickBuild限制,实现更高效的视觉应用开发。

weixin_30417487的博客 502

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 559

OpenLayers源码解析1 Map.js

Map.js 父类:./PluggableMap/PluggableMap 引用:5个模块 ./renderer/Composite.js ./PluggableMap.js ./obj.js ./control.js(控件) ./interaction.js(交互) 主要功能:核心组件,渲染地图 必要参数: view layers target controls和interactions要是未指定,使用默认值 方法:createRenderer()? /** * @module ol/Map */ i

qq_45005996的博客 1898

智能挂锁软件需求规格说明书(SRS)

智能挂锁系统SmartPadlockV1.0是一款融合蓝牙通信、指纹识别和远程控制技术的便携式安防设备。系统由设备端、移动App和云平台三部分组成,支持蓝牙配对(10米内)、指纹识别、OTP一次性密码等多种开锁方式,响应时间<1.5秒。产品采用SM2/SM4加密技术保障安全,日均20次使用下续航达180天,兼容iOS13+/Android8.0+系统。功能包括设备绑定、远程授权、开锁记录查询和OTA固件升级,符合个人信息保护法规要求,适用于仓储、快递柜等多场景应用。

moton2017的博客 2111

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 19

yolov26改进 | Neck篇 | 利用Gold-YOLO改进yolov26对小目标检测能力(全网独家首发)

本文介绍利用Gold-YOLO的Neck改进YOLOv26,通过信息聚集—分发机制GD,先全局汇聚不同层级特征,再将融合后的全局信息重新注入各尺度分支,增强浅层细节与深层语义之间的交互,减少传统Neck逐层传递造成的信息损失。该结构虽然融合路径更长,但能够在不过度增加延迟的前提下提升多尺度目标检测能力,尤其适合大小目标并存、尺度变化明显和复杂背景场景。本文将讲解GD机制、Neck替换、模块注册与配置方法,并提供完整代码、配置文件及Codex修改思路,方便直接复现、实验对比和二次创新。

Snu77的博客 289

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 643

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex&trade;-M4F 内核的信息,请参见《Cortex&trade;-M4F 技术参考手册》。

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 81

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 177

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 317

不同的二叉搜索树

互不相同的二叉搜索树的种数,以 j (1<=j<=i)为头节点,左子树是 j-1 个数,右子树就是 i - (j - 1) -1 = i - j个数。所以dp[3] = dp[0] * dp[2] + dp[1] * dp[1] + dp[2] * dp[0]头1 = 左子树0节点 * 右子树2节点,二叉搜索树就是排序树,左子树<根节点<右子树,左右子树也满足左子树<根节点<右子树。头2 = 左子树1节点 * 右子树1节点。所以dp[i] += dp[j-1] * dp[i-j]个节点组成且节点值从。

qq_44721738的博客 150

SSL证书选RSA还是ECDSA:公钥算法、CA签名与兼容性怎么核对

申请SSL证书时,RSA和ECDSA该怎么选?先分清站点公钥算法、CA签名算法和TLS实际兼容性,再用隔离OpenSSL实验读取两类材料,核对申请、续期和部署交接,避免只看Signature Algorithm就选错。

谁呀!的博客 394

从曲线到储层:Techlog/KAPPA 全流程算法、UltraLAB 选型与本地 AI 部署实战

以高频 CPU 保证交互,以充足内存承载多井与多任务,以 NVMe 打通项目和知识库 I/O,再按本地模型、上下文与并发配置 GPU。对 UltraLAB 用户而言,更合理的采购方式是带着真实项目做选型:一组典型井、一套完整解释模板、一个目标大模型、一次多人并发测试。用实测结果确定配置,才能把预算转化为解释效率,而不是闲置算力。软件模块、操作系统与许可条件以厂商当前正式说明为准;硬件建议需结合项目实测。AI 输出只能作为辅助证据,不能替代岩石物理与油藏工程专业审核。

wdf8088的博客 165

【Deep-OC-SORT 01】多轨迹算法Deep-OC-SORT源码分析

本工程基于Deep-OC-SORT核心模块,重构并适配了EmbeddingComputer(外观特征提取)、CMCComputer(相机运动补偿)与OCSort(主跟踪器)三类。前者实现整框/网格模式的特征提取与L2归一化;后者通过稀疏光流或SIFT匹配估计仿射变换,补偿相机运动;主跟踪器融合IoU、外观相似度与方向一致性,支持模块开关与自定义组件,实现高效多目标跟踪。

Jayson 博客 331

C++ 标准库算法全景指南

本文系统梳理C++标准库<algorithm>与<numeric>中100+算法,按功能分为非修改、修改、排序、二分查找、归并、堆、极值、字典序、排列及数值操作十大类,涵盖典型用法与时间复杂度。结合C++20范围(ranges)与投影特性,实现更简洁高效的代码。

sss123ddd的博客 271

算法日常・每日刷题--<动态规划>41

给定两个字符串text1和text2,求其最长公共子序列长度。使用动态规划,定义dp[i][j]为text1前i个字符与text2前j个字符的最长公共子序列长度。若字符相等,则dp[i][j] = dp[i-1][j-1] + 1;否则取舍弃一方的最大值:dp[i][j] = max(dp[i-1][j], dp[i][j-1])。最终返回dp[m][n]。时间复杂度O(mn),空间复杂度O(mn)。

2503_92261635的博客 136

高速公路无人机巡检系统:场景、算法与部署方案

高速公路巡检的工程矛盾,不在“能不能飞到”,而在“端侧算力、时延约束与精度要求三者之间如何分配”。路面病害要求毫米级识别,但高速动态成像与运动模糊压制了单帧精度;交通事件要求秒级推送,但隧道与峡谷的通信盲区切断了云端链路;桥梁梁底的无卫星信号环境,则把自主定位的难度推到了GNSS失效的边界。本文从“端—边—云”三级协同的工程逻辑出发,拆解路面病害、交通事件、桥梁结构三类场景下算法与部署的实际取舍,结合重庆绕城高速、广西六宾高速、南京6G低空巡检等公开数据,给出可复用的系统设计参考。

THJS优快云的博客 200
上一篇: 洛谷 - OICon Tournament 2 题解
下一篇: 基于二分查找与插入的快速排序题解
Chat_lsm2024
博客等级 码龄7年 903粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值