news 2026/6/24 1:10:15

状压dp|dfs|dijk

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
状压dp|dfs|dijk

lc2816

优雅递归😋

class Solution {
public:
int t=0;
ListNode* doubleIt(ListNode* head)
{
auto dfs=[&](this auto&& dfs,ListNode* node)->ListNode*
{
if(!node) return nullptr;
dfs(node->next);


//先递归到结尾
//handle
int v=node->val;
node->val=v*2%10+t;
t=v*2/10;
return node;
};
dfs(head);
if(t)
return new ListNode(1,head);
return head;
}
};

lc2486

暴力dfs

DFS找从起点到终点的最小掉血路径

记下来最少掉多少血

若这个数比初始健康值小且能走到终点,就返回true

必然 充分的地推验证过程 实现剪枝

class Solution {
public:
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};

bool findSafeWalk(vector<vector<int>>& g, int h) {
int m=g.size(),n=g[0].size();
vector<vector<int>> mem(m, vector<int>(n, INT_MAX));

auto dfs = [&](this auto&& dfs, int x, int y, int c){
if(x<0||x>=m||y<0||y>=n||c>=mem[x][y]) return;
mem[x][y] = c;
if(x==m-1&&y==n-1) return;
for(int k=0;k<4;k++){
int a=x+dx[k],b=y+dy[k];
dfs(a,b,c + (a>=0&&a<m&&b>=0&&b<n?g[a][b]:0));
}
};

dfs(0,0,g[0][0]);
return mem[m-1][n-1] < h && mem[m-1][n-1] != INT_MAX;
}
};

dijk优化

对于"大的同时小一点"

大的加给小的,返回当前大的

lc1723

预处理 抽象出jobs子集枚举 状态 +状压dp

二进制表示任务组合,先算所有组合的总耗时,再用动态规划分k个工人:

每个工人分配部分任务,取“当前工人任务耗时”和“之前工人最大耗时”的较大值

最终找k个工人干完所有任务的最小最大耗时

class Solution {

public:
int minimumTimeRequired(vector<int>& jobs, int k)

{
int n = jobs.size();
vector<int> tot(1 << n, 0);
for (int i = 1; i < (1 << n); i++) {
for (int j = 0; j < n; j++) {
if ((i & (1 << j)) == 0) continue;
int left = (i - (1 << j));
tot[i] = tot[left] + jobs[j];
break;
}
}

vector<vector<int>> dp(k, vector<int>(1 << n, -1));
for (int i = 0; i < (1 << n); i++)
dp[0][i] = tot[i];

for (int j = 1; j < k; j++) {
for (int i = 0; i < (1 << n); i++) {
int minv = INT_MAX;
for (int s = i; s; s = (s - 1) & i)

{

// 枚举 i 的全部子集
int left = i - s;
int val = max(dp[j-1][left], tot[s]);
minv = min(minv, val);
}
dp[j][i] = minv;
}
}
returndp[k-1][(1<<n)-1];
}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 17:40:49

PySpark实战 - 2.1 利用Spark SQL实现词频统计

文章目录1. 实战概述2. 实战步骤3. 实战总结1. 实战概述 本次实战基于 Spark SQL 对 HDFS 上的文本文件进行词频统计&#xff0c;通过 DataFrame API 读取数据、使用 split 与 explode 函数拆分单词&#xff0c;并结合临时视图与 SQL 语句完成分组计数与排序&#xff0c;最终将…

作者头像 李华
网站建设 2026/6/23 4:29:41

PerlinNoise Perlin噪声(PerlinNoise)隐式函数构建模型并渲染

一&#xff1a;主要的知识点 1、说明 本文只是教程内容的一小段&#xff0c;因博客字数限制&#xff0c;故进行拆分。主教程链接&#xff1a;vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①柏林噪声的构建与渲染 二&#xff1a;代码…

作者头像 李华
网站建设 2026/6/23 5:26:58

Linly-Talker支持模型性能 profiling,精准定位瓶颈

Linly-Talker 支持模型性能 profiling&#xff0c;精准定位瓶颈 在虚拟主播、智能客服和数字员工逐渐走入大众视野的今天&#xff0c;用户对交互体验的要求早已不再局限于“能说话”——他们期待的是自然、实时、有情感的对话。然而&#xff0c;构建一个真正流畅可用的数字人系…

作者头像 李华
网站建设 2026/6/23 18:24:41

Linly-Talker如何处理中英文混读?语音识别适配策略

Linly-Talker 如何处理中英文混读&#xff1f;语音识别适配策略 在当今数字人系统广泛应用于虚拟主播、智能客服和企业级对话代理的背景下&#xff0c;用户对交互自然性的要求已经远超“能听懂”这一基础标准。真实场景中的语言表达往往是复杂且不规则的——尤其是在科技、金融…

作者头像 李华
网站建设 2026/6/23 10:30:56

LLM 的思考方式

原文&#xff1a;towardsdatascience.com/how-llms-think-d8754a79017d 你是否曾经想过 AI 模型是如何“思考”的&#xff1f;想象一下窥视机器的内心&#xff0c;观察齿轮的转动。这正是 Anthropic 的一项开创性论文所探讨的内容。标题为“扩展单义性&#xff1a;从 Claude 3 …

作者头像 李华