当前位置: 首页 > 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.dtcms.com/a/339695.html

相关文章:

  • GIS相关调研
  • Meta首款AR眼镜Hypernova呼之欲出,苹果/微美全息投入显著抢滩市场新增长点!
  • MyBatis-Plus基础篇详解
  • HashMap工作原理
  • 使用Tomcat Clustering和Redis Session Manager实现Session共享
  • 设备树下的LED驱动实验
  • 【机器人】2025年人形机器人时代:伦理迷雾中的人类界限
  • PAT 1072 Gas Station
  • visionpro获取电脑cpu序列号
  • 生信分析自学攻略 | R语言数据类型和数据结构
  • 矿物分类系统开发笔记(二):模型训练[删除空缺行]
  • leetcode2248. 多个数组求交集
  • ES支持哪些数据类型,和MySQL之间的映射关系是怎么样的?
  • Vue3 学习教程,从入门到精通,vue3综合案例:“豪华版”待办事项(41)
  • [Polly智能维护网络] 网络重试原理 | 弹性策略
  • PyTorch数据处理工具箱(utils.data简介)
  • UE5 PCG 笔记(一)
  • C++ STL(标准模板库)学习
  • 华为鸿蒙系统SSH如何通过私钥连接登录
  • 传统概率信息检索模型:理论基础、演进与局限
  • 短剧小程序系统开发:打造沉浸式短剧观影体验
  • EPM240T100I5N Altera FPGA MAX II CPLD
  • Spring Cache 整合 Redis 实现高效缓存
  • idea如何设置tab为4个空格
  • 复习登录校验流程:会话跟踪技术与请求拦截方案详解
  • SpringBoot-集成POI和EasyExecl
  • 《Light Sci Appl》突破:vdW材料实现亚波长光学涡旋生成,转换效率达46%
  • 前端基础知识操作系统系列 - 01(操作系统的理解?核心概念有哪些)
  • Spring Ai Prompts
  • 佰力博检测与您探讨电晕极化时有时会击穿是什么原因