news 2026/2/9 5:12:12

状压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/1/28 20:35:25

Linly-Talker支持动态批处理,提高GPU吞吐量

Linly-Talker支持动态批处理&#xff0c;提高GPU吞吐量 在虚拟主播直播间里&#xff0c;成百上千名观众同时发问&#xff1a;“今天推荐什么股票&#xff1f;”“你能唱首歌吗&#xff1f;”“用四川话说一遍祝福语。”如果每个问题都要等系统逐个处理、逐个生成视频回应&#…

作者头像 李华
网站建设 2026/2/8 2:25:25

Linly-Talker数字人系统:一键生成口型同步讲解视频

Linly-Talker数字人系统&#xff1a;一键生成口型同步讲解视频 在教育机构忙着录制网课、电商主播通宵直播、客服团队疲于应对重复咨询的今天&#xff0c;一个共通的痛点浮现出来&#xff1a;优质内容生产太慢&#xff0c;人力成本太高。有没有可能让“另一个我”替我讲话&…

作者头像 李华
网站建设 2026/2/7 20:21:46

Linly-Talker支持多线程推理,高并发场景从容应对

Linly-Talker&#xff1a;高并发数字人对话系统的多线程推理实践 在虚拟主播直播间里&#xff0c;成百上千的观众同时提问&#xff1b;企业客服系统中&#xff0c;数十名员工正通过AI助手处理客户咨询&#xff1b;在线教育平台上&#xff0c;数百个学生正在与个性化AI讲师互动……

作者头像 李华
网站建设 2026/2/7 7:30:12

Win xp激活

链接&#xff1a;https://pan.quark.cn/s/15877e4b435a器。

作者头像 李华
网站建设 2026/2/8 7:19:00

AI客服升级方案:传统IVR向Linly-Talker智能交互演进

AI客服升级方案&#xff1a;传统IVR向Linly-Talker智能交互演进 在银行热线中反复按键、听机械女声播报“请按1查询余额”&#xff0c;这种体验对今天的用户来说早已过时。当人们习惯了与Siri、小爱同学自然对话&#xff0c;再回到层层菜单的语音系统&#xff0c;就像从智能手机…

作者头像 李华
网站建设 2026/2/8 2:04:58

编程世界时间对象的最小公倍数(闲话Float-Time)

五花八门赖算力&#xff0c;数值直传操现代。 笔记模板由python脚本于2025-12-20 23:48:53创建&#xff0c;本篇笔记适合喜欢日期时间玩味的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Python官…

作者头像 李华