dijk|tire+floyd+dp %

算法 数学归纳+反证的角度 推理总结的思路

lc2575

% 步步取模 实现整数拆分

class Solution {

public:

vector<int> divisibilityArray(string word, int m) {

vector<int> ans(word.length());

long long x = 0;

for (int i = 0; i < word.length(); i++) {

++x = (x * 10 + (wordi - '0')) % m;++

ansi = x == 0;

}

return ans;

}

};

lc2577

dijk 单源最短路 一开始只有一个起点 不可有负数

pq贪心更新 一步一步的取出 确定 选择

class Solution {

static constexpr int dirs42 = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};

public:

int minimumTime(vector<vector<int>> &grid) {

int m = grid.size(), n = grid0.size();

if (grid01 > 1 && grid10 > 1) // 无法「等待」

return -1;

int dismn;

memset(dis, 0x3f, sizeof(dis));

dis00 = 0;

priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, greater<>> pq;

pq.emplace(0, 0, 0);

for (;;) { // 可以等待,就一定可以到达终点

autod, i, j = pq.top();

pq.pop();

if (d > disij) continue;

if (i == m - 1 && j == n - 1)

// 找到终点,此时 d 一定是最短路

return d;

for (auto &q : dirs) {

// 枚举周围四个格子

int x = i + q0, y = j + q1;

if (0 <= x && x < m && 0 <= y && y < n) {

int nd = max(d + 1, gridxy);

nd += (nd - x - y) % 2;

// nd 必须和 x+y 同奇偶

++if (nd < disxy) {
disxy = nd;
++ // 更新最短路

pq.emplace(nd, x, y);

}

}

}

}

}

};

floyd 多源最短路

一种 选/不选 的dp思想

class Solution {

public:

int findTheCity(int n, vector<vector<int>>& edges, int distanceThreshold) {

vector w(n, vector<int>(n, INT_MAX / 2)); // 防止加法溢出

for (auto& e: edges) {

int x = e0, y = e1, wt = e2;

wxy = wyx = wt;

}

vector memo(n, vector(n, vector<int>(n)));

auto dfs = \&(this auto&& dfs, int k, int i, int j) -> int {

if (k < 0) { // 递归边界

return wij;

}

auto& res = memokij; // 注意这里是引用

if (res) { // 之前计算过

return res;

}

return res = min(dfs(k - 1, i, j), dfs(k - 1, i, k) + dfs(k - 1, k, j));

};

int ans = 0;

int min_cnt = n;

for (int i = 0; i < n; i++) {

int cnt = 0;

for (int j = 0; j < n; j++) {

if (j != i && dfs(n - 1, i, j) <= distanceThreshold) {

cnt++;

}

}

if (cnt <= min_cnt) { // 相等时取最大的 i

min_cnt = cnt;

ans = i;

}

}

return ans;

}

};

lc2977

tire+floyd+dp

题解

struct Node {

Node* son26{};

int sid = -1; // 字符串的编号

};

class Solution {

public:

long long minimumCost(string source, string target, vector<string>& original, vector<string>& changed, vector<int>& cost) {

Node* root = new Node();

int sid = 0;

auto put = \&(string& s) -> int {

Node* o = root;

for (char b: s) {

int i = b - 'a';

if (o->soni == nullptr) {

o->soni = new Node();

}

o = o->soni;

}

if (o->sid < 0) {

o->sid = sid++;

}

return o->sid;

};

// 初始化距离矩阵

int m = cost.size();

vector dis(m * 2, vector<int>(m * 2, INT_MAX / 2));

for (int i = 0; i < m * 2; i++) {

disii = 0;

}

for (int i = 0; i < m; i++) {

int x = put(originali);

int y = put(changedi);

disxy = min(disxy, costi);

}

// Floyd 求任意两点最短路

for (int k = 0; k < sid; k++) {

for (int i = 0; i < sid; i++) {

if (disik == INT_MAX / 2) { // 加上这句话,巨大优化!

continue;

}

for (int j = 0; j < sid; j++) {

disij = min(disij, disik + diskj);

}

}

}

int n = source.size();

vector<long long> f(n + 1);

for (int i = n - 1; i >= 0; i--) {

// 不修改 sourcei

fi = sourcei == targeti ? fi + 1 : LONG_LONG_MAX / 2;

Node* p = root;

Node* q = root;

for (int j = i; j < n; j++) {

p = p->sonsource\[j - 'a'];

q = q->sontarget\[j - 'a'];

if (p == nullptr || q == nullptr) {

break;

}

if (p->sid < 0 || q->sid < 0) {

continue;

}

// 修改从 i 到 j 的这一段

int d = disp-\>sidq-\>sid;

if (d < INT_MAX / 2) {

fi = min(fi, disp-\>sidq-\>sid + fj + 1);

}

}

}

return f0 < LONG_LONG_MAX / 2 ? f0 : -1;

}

};

相关推荐
傅科摆 _ py22 分钟前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法
Shaoshing1 小时前
LeetCode100 42.接雨水
java·算法·leetcode
域限奇点访客1 小时前
用AI生成问卷的网站怎么选?看题目录入结构、题型映射和生成后的校验
算法
not coder2 小时前
一文讲通--从树到红黑树
数据结构·算法
octopus_c2 小时前
C++ 入门
开发语言·c++·算法
ZhengEnCi2 小时前
2026年10月30日AI早报:Gemini 4 Carbon登顶、DeepSeek融资1055亿、智元机器人上岗实测
人工智能·算法
强哥聊算力3 小时前
《算力江湖·Intel帝国往事》第三集:安迪·格鲁夫的铁血时代:Intel为什么能把对手逼到墙角?
运维·人工智能·科技·算法·ai·gpu算力
Shaoshing3 小时前
LeetCode100 11. 盛最多水的容器
算法·leetcode
骑着蜗牛撵大象3273 小时前
558 万美元训出 671B 模型:DeepSeek-V3 算法与系统的协同拆解
分布式·算法·moe·deepseek-v3·mla·fp8训练
Eyfcom4 小时前
〖阶段性回顾〗物流系统架构与算法的 Day 1-5 知识图谱与实战答疑
算法·系统架构·知识图谱·物流管理系统·快递管理系统