当前位置: 首页 > news >正文

状压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];
}
};

http://www.cnnetsun.cn/news/168195.html

相关文章:

  • PySpark实战 - 2.1 利用Spark SQL实现词频统计
  • PerlinNoise Perlin噪声(PerlinNoise)隐式函数构建模型并渲染
  • Linly-Talker支持模型性能 profiling,精准定位瓶颈
  • Linly-Talker如何处理中英文混读?语音识别适配策略
  • LLM 的思考方式
  • 【虚拟同步机控制建模】三相虚拟同步发电机双环控制(Simulink仿真实现)
  • 万字长文!关于AI绘图,一篇超详细的总结发布
  • 数字人会议主持:Linly-Talker在远程会议中的创新应用
  • 【顶级EI完整复现】【DRCC】考虑N-1准则的分布鲁棒机会约束低碳经济调度(Matlab代码实现)
  • 用Linly-Talker做企业宣传片?品牌传播的AI新路径
  • Electerm(桌面终端模拟软件)
  • Thinkphp和Laravel基于Vue的黄山旅游景区门票预订网站的设计与实现_3h38caai
  • Thinkphp和Laravel基于大数据架构的大学生求职招聘就业岗位推荐系统的设计与实现_67911t4j
  • AI工具实战测评技术
  • 创意AI应用开发大赛技术
  • 全球股市估值与海洋微生物能源技术的关系
  • 基于python的同城宠物照看数据可视化分析系统的设计与实现_34cl0po8--论文
  • 【路径规划】基于RRT快速探索随机树的图像地图路径规划实现3附matlab代码
  • Quartz 工作模式,是“堵塞排队”还是“并发狂奔”?
  • 【FFNN负荷预测】基于人工神经网络的空压机负荷预测(Matlab代码实现)
  • 【C2000系列DSP的反向灌电流】为什么热插拔的时候I2C总线电平会被拉低?
  • Gemini Inc靶场练习(包含suid提权,文件包含漏洞,ssh免密登录)
  • 软件解耦与扩展:插件式开发方式(基于 C++ 与 C# 的实现)
  • 免费降AI率的工具红黑榜:认准这2个免费降AI率工具,亲测有效!
  • 霍华德·马克斯的市场周期定位技巧
  • 1500字免费降AIGC率的额度,2026年毕业论文查重必备!
  • 1500字免费降AIGC率的额度,2026年毕业论文查重必备!(附每天5次aigc查重)
  • 别再焦虑了!6款实测有效的降ai工具推荐,学姐手把手教你降低ai率!
  • 国外软件,安装即时专业版!
  • 防控近视你需要知道的这些科普常识!