leetcode 996. Number of Squareful Arrays
摘要:给定一个长度小于 12 的数组 要求排列方式的种数 使得相邻和为完全平方 不考虑数学结构 将问题转化为 一笔画问题 和为完全平方代表 之间存在通路 回溯法 N^N 记忆化搜索 N N 2^N + 判断是否是完全平方 int(x 0.5+0.5) 2 ==x + 对于函数使用 functools.lr
阅读全文
795. Number of Subarrays with Bounded Maximum
摘要:数学的方式 是对于所有的字符分成简单的三类 0 小于 L 1 LR 之间 2 大于R 也就是再求 不包含 2 但是包含1 的子数组个数 不包含2的子数组个数好求 对于连续的相邻的n个 非2类数 就有 n (n 1)//2 + n 个连续子数组 但是包含1 的子数组个数不好求,这里求反 求不包含 包含
阅读全文
tiger-complier 问题记录 类型检查
摘要:1 注意区分 Ty_xxx 和 a_ 的区别 A 开头是对应的是原程序中的一个实体 Ty _ 开头则是类型检查中的一个抽象类 代表了一类实体 比如 A_recordTy 是原程序中的 type per {name:string , age:int} Ty_record 则是一种类型的抽象 是 Ty_
阅读全文
leetcode 854. K-Similar Strings
摘要:给定两个字符串, 判断最少经过多少次swap 可以使得 两个字符串一致, 首先类似的问题 是存在一个 underlying graph 的。 每一个字母都对应着一个节点,两个字符串的不一致表示为图上的一条有向边 最后的问题转化为 图上的最(多)圆环分解 要注意的是贪心策略并不能解决问题(即每一次都选
阅读全文
901. Online Stock Span [短于线性的时间统计单个元素的Span ]
摘要:Span 指这个元素之前连续的小于这个元素的值有多少个 原理: 维护递减栈 这个栈内的元素是递减的序列 新到一个元素x 依次出栈比x小的(也就是这个元素的Span) 这种问题的关键在于 新来的元素如果比前一个元素小 那么答案是1 如果比前一个元素大 ( 那么前一个元素在之后就完全没有用了, 所以可以
阅读全文
leetcode 850. Rectangle Area II
摘要:给定一些矩形2 求覆盖面积 矩形不超过200个 1 算法1 朴素思想 虽然朴素但是代码却有意思 利用容斥原理 复杂度高达 N 2^N 2 点位压缩,压缩后进行暴力循环 同时压缩x和y 最后返回 N^3 3 算法3 扫描线算法 将每一个矩形看作一个 "事件" 这样的事件 4 注意到刚才的3算法中使用了
阅读全文
leetcode 699. Falling Squares 线段树的实现
摘要:线段树实现。很多细节值得品味 都在注释里面了 class SegTree: def __init__(self,N,query_fn,update_fn): self.tree=[0] (2 N+2) 最后一个节点有可能无用 ,但是确保树是完全的 self.lazy=[0] (N+1) self.N
阅读全文
leetcode 847. Shortest Path Visiting All Nodes 无向连通图遍历最短路径
摘要:设计最短路径 用bfs 天然带最短路径 每一个状态是 当前的阶段 和已经访问过的节点 下面是正确但是超时的代码 class Solution: def shortestPathLength(self, graph): """ :type graph: List[List[int]] :rtype:
阅读全文
leetcode 843. Guess the Word
摘要:我做过的第一个 interactive problem 给一个候选词列表,每次猜测可以猜里面的词,会返回猜中匹配的个数, 可以猜10次, 加上随机化策略之后几乎可以一定通过测试(尽管不是100%)
阅读全文
leetcode 839 Similar String Groups
摘要:题目 Two strings X and Y are similar if we can swap two letters (in different positions) of X, so that it equals Y. We are given a list A of strings. Ev
阅读全文
leetcode 76 dp& 强连通分量&并查集经典操作
摘要:800. Similar RGB Color 下面是一个简介的py 版本大意相同 802. Find Eventual Safe States tarjan 算法的变形。 总而言之,我们定义一个bad 的连通分量: 如果他的 规模大于1 或者有子环 或者 通向其他bad的连通分量 则为bad 联通分
阅读全文
leetcode 75
摘要:796 简单的字符串操作 797 深度优先搜索 非常简洁的实现,还是要学习的 简洁之处: 没有使用我全局定义的 ans 和 path ans 和path 在这种情境下被统一起来,最终也没有进行回退,每一次都是新的拷贝创建 798 最小旋转最大得分 计算初始分数,在每个旋转点时的得分和失分 如果直接(
阅读全文
round 469
摘要:第一次打codeforces,还是太菜了 代码全部来自大神void_f C E 是抽象了就是给定一个有向图, 对于一个点来说,他的值是从他可以到达点格个数 ,找到值最小的点 经典算法: 考虑到有向图,使用tarjan 算法 时间戳数组 dfn 标记数组 记录当前节点扩展到的最早节点 low 同一个l
阅读全文
uva 11300 分金币(利用绝对值加和进行求出最小值)
摘要:``` //qq 767039957 welcome #include #include #include #include #include #include using namespace std; typedef long long LL; typedef unsigned long long ULL; //这里有点类似于隔离分析法,设 xi为第i个人给上一个人的金比数可正可负 //Di...
阅读全文