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

图论\dp 两题

3310. 移除可疑的方法 - 力扣(LeetCode)

读懂题目就不难。[a,b]表示方法a调用了方法b。现在要除去所有的可疑方法,就要把方法k调用的(直接与间接)方法都删除。如果存在非可疑方法调用可疑方法,就不删除任何方法。

思路很简单,建图之后从k开始搜索。dfs或者bfs都可以。注意,有向图没办法用并查集。用并查集判断了k和哪些节点是在一个集合中,但没办法处理这个集合中节点的指向关系。

bfs版本:

class Solution
{
public:vector<int> remainingMethods(int n, int k, vector<vector<int>>& invocations){//建图vector<vector<int>>g(n);for (auto& edge:invocations){g[edge[0]].push_back(edge[1]);}//方法edge[0]调用了方法edge[1]//bfs找出可疑方法:方法k及其调用的方法vector<int>sus(n);queue<int>que;que.push(k);//从k开始bfssus[k] = 1;//可疑标记为1while (!que.empty()){int curr = que.front();que.pop();for (int node : g[curr]){if (sus[node] == 0)//图可能有环,避免死循环{sus[node] = 1;que.push(node);}}}//检查:是否有非可疑方法调用可以方法,如果有就不能删掉for (auto& e : invocations){if (sus[e[0]] == 0 && sus[e[1]] == 1)//非可疑方法调用可疑方法{//则无法移除可疑方法vector<int>ans(n);iota(ans.begin(), ans.end(), 0);return ans;}}//移除可疑方法vector<int>ans;for (int i = 0; i < n; i++){if (sus[i] == 0){ans.push_back(i);}}return ans;}
};

std::iota用于生成一个连续的数值序列,需要引入numeric库。

template <class ForwardIterator, class T>
void iota(ForwardIterator first, ForwardIterator last, T value);

从T开始赋值。

377. 组合总和 Ⅳ - 力扣(LeetCode)

本质和爬楼梯:70. 爬楼梯 - 力扣(LeetCode)是一样的。只不过,爬楼梯的数组是[1,2],即你一次只能爬1或2个台阶。本题nums中元素表示一次能爬的台阶数。在求dp[i]时,遍历nums数组,假设我们遍历到了j,那么dp[i]加上dp[i-j]即可。即到达第i个阶梯有dp[i]个方法,现在发现还能一次走j个台阶,所以新增方法数等于到达第i-j个台阶的方法数。

class Solution 
{
public:int combinationSum4(vector<int>& nums, int target) {int n=nums.size();vector<unsigned>dp(target+1);dp[0]=1;for(int i=1;i<=target;i++){for(int x:nums){if(x<=i) dp[i]+=dp[i-x];}}return dp[target];}
};

unsigned避免数据溢出。

http://www.lryc.cn/news/625581.html

相关文章:

  • 设计模式笔记_行为型_命令模式
  • 【React】事件绑定和组件基础使用
  • 从线性回归到神经网络到自注意力机制 —— 激活函数与参数的演进
  • java基础(十二)redis 日志机制以及常见问题
  • 2025年12大AI测试自动化工具
  • 多模态大模型应用落地:从图文生成到音视频交互的技术选型与实践
  • 【模块系列】STM32W25Q64
  • TDengine IDMP 运维指南(4. 使用 Docker 部署)
  • 第六天~提取Arxml中CAN物理通道信息CANChannel--Physical Channel
  • 5. Dataloader 自定义数据集制作
  • C语言基础:(十八)C语言内存函数
  • java17学习笔记-Deprecate the Applet API for Removal
  • 算法——质数筛法
  • yolov5s.onnx转rk模型以及相关使用详细教程
  • 假设检验的原理
  • python的社区互助养老系统
  • word如何转换为pdf
  • MFC中使用EXCEL的方法之一
  • ios使用saveVideoToPhotosAlbum 保存视频失败提示 invalid video
  • 基于单片机的智能声控窗帘
  • 437. 路径总和 III
  • Qt 插件开发全解析:从接口定义,插件封装,插件调用到插件间的通信
  • SWMM排水管网水力、水质建模及在海绵与水环境中的应用
  • 第5章 高级状态管理
  • 结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
  • 深入理解 CAS:无锁编程的核心基石
  • nginx安装配置教程
  • 理解JavaScript中的函数赋值和调用
  • Gemini CLI 详细操作手册
  • 传统概率信息检索模型:理论基础、演进与局限