自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 CF Global Round 19 E Best Pair

题目描述​​​​​​解题思路首先明确 :对于一个 nnn 长度的数组 arr[]arr[]arr[] ,最多只能有 n\sqrt{n}n​ 个不同的 cntxcnt_xcntx​ , 可以通过 求和公式推导这样我们就可以通过枚举 cntxcnt_xcntx​ ,cntycnt_ycnty​ 来贪心求解 —— 目标求解 : max⁡{(cntx+cnty)∗(x+y)}\max\{(cnt_x + cnt_y) * (x + y)\}max{(cntx​+cnty​)∗(x+y)} ,则当 cnt

2022-03-14 19:52:56 443

原创 ACWin 第11场周赛 第三题 : 最大化最短路

题目链接 :最大化最短路题目描述 :题目思路 : 如果我们选出了两个候选点 a1,a2,则 : 1 -> n 的最短路的长度只有三种情况 :保持原来的最短路,即最短路不被加入边所影响 最短路变为 1 -> a1 -> a2 -> n 最短路变为 1 -> a2 -> a1 -> n即 :加入两点后,最短路位上述的三种情况中的最小值然后题目等价于 找到点对 a1,a2 使得上述得到的 最短路 最大 即可所以记...

2021-08-08 10:00:48 248

原创 Acwin 第六场周赛 第三题 构造完全图

题目链接 :3735. 构造完全图题目描述 :题目思路 : 首先明确当 m == (n * (n + 1)) / 2 时 , 原图即为一个完全图,无需进行操作 看数据范围,点的范围最大 22,则可以想到用状态压缩来解决该问题 然后翻译题目模型,即 :每次选择一个点相当于 {与该点相连的点} 与 该点 成为一个团(完全图)。 那么对于每一个完全图的状态,我们都可以选择该状态中的一个点来进行扩展的操作...

2021-07-19 09:49:43 290

原创 动态规划的无后效性

写这篇的起因还是因为2021.7.10 力扣双周赛的第四题用 记忆化 + 深搜 来写的,但是一直有几个样例过不去,在困扰之际看到了另一篇的题解为什么记忆化搜索得不到正解?中才恍然大悟,特此做一个记录无后效性。所谓的无后效性,即对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策。题目描述 :比赛思路:用一个邻接表来表示图,g[i] = {p0,...,p_j} 与 点 i 相邻的点为 {p0,...,p_j}gg[i][j] 来表示 点 i 和 ...

2021-07-11 20:41:13 854

原创 ACWing 第五场周赛 第三题 3728. 城市通电 整理

题目链接 :3728. 城市通电题目描述 :题目分析 :比赛的时候也想到了最小生成树,但是发现不知道如何判断最后是多少个 "树"所以要加入一个超级源点, 这样问题就变成了求n + 1 个点加入n 条边来形成最小生成树的最小开销了 而不用像上面一样考虑生成多少个树的问题了那么初始化的时候 dis[i] 就是 村庄 i 到 超级源点的 "距离" 也就是 在 村庄 i 创建发电站的开销用 e[i] 来表示对应 dis[i] 时, i 村庄 与 e[i] 相连然后每次...

2021-06-27 17:08:02 133

原创 最长上升子序列最大和模型(离散化 + 树状数组)N * logN

最长上升子序列最大和模型(离散化 + 树状数组)题目描述题目分析优化离散化 + 树状数组 进行 logN 查询题目描述???? https://www.acwing.com/problem/content/3665/题目分析首先最初的 动态规划 模型 : 当 N < 1000 时 :用 dp[i] 来表示 以 nums[i] 结尾的最长上升子序列最大和则 :for(int i = 0;i < n;i ++) { for(int j = i - 1;j >= 0;j --

2021-06-12 21:40:40 369 2

原创 模拟退火算法的应用

模拟退火算法摘至 百度百科模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。模拟退火算法(Simulated Annealing,SA)最早的思想是由N. Metropolis [1] 等人于1953年提出。1983 年,S. Kirkpatrick 等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo

2021-04-04 14:59:32 2330

原创 背包问题整理 (背包九讲)

1. 01 背包问题分析 :1. 二维动态规划:f[i][j] = v-> 用前 i 件物品,使用容量为 j 的情况的 能获得的最大价值转移方程:对于 物品 i 来说有取和不取两种方案:然后两者取较大值即可(a). 取:f[i][j] = f[i-1][j-wi] + vi;(b). 不取:f[i][j] = f[i-1][j]初始化:f[0][0] = 0;答案:max{ f[i][] }优化:从上面...

2021-04-02 21:09:40 216

原创 单源点求最短路径的三种常用的方法

最短路径问题主要参考于博客:Dijkstra:https://blog.youkuaiyun.com/qq_35644234/article/details/60870719Floyd:https://www.jianshu.com/p/f73c7a6f5a53SPFA :https://blog.youkuaiyun.com/qq_35644234/article/details/61614581问题描述:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径...

2021-03-31 09:57:40 3873

原创 LeetCode T1483 树节点的第k个祖先 倍增法求解 记录

题目描述题目分析:因为看题目的数据可以得到,当树退化成一个单链表时,时间复杂度变为 O(n^2) 会超时并且从数据的大小可以得到 要通过这个数据 需要 O(n) 或者 O(nlogn) 的时间复杂度因为O(n) 几乎不可能,相当于对于每一个结点的查询都是在 O(1) 下完成所以考虑 O(nlogn) 来解决问题,相当于对于每一个结点的查询都在 O(logn) 完成------>想到倍增方法,即存储每一个结点的 2^n 的父节点 ,这样对于每一个查询都只需要 l..

2021-03-06 10:41:48 198

原创 力扣 470 :均匀的生成随机数

参考题解:https://leetcode-cn.com/problems/implement-rand10-using-rand7/solution/cong-zui-ji-chu-de-jiang-qi-ru-he-zuo-dao-jun-yun-/题目描述:题目分析:通过对 rand2() 来生成 rand4() 可以发现用 ( rand2() - 1 ) * 2 + rand2() 可以所以可以得到规律 :已知 rand_N() 可以等概率的生成[1, N]范围的..

2021-03-05 11:14:59 501 1

原创 LeetCode 1178 猜字谜 : 二进制状态压缩 + 子集枚举技巧(2 种)

题目描述:题目分析:题目等价于: 对于每一个 puzzle 的子集在 words 中的集合中找到合适的 word ,并求和出现的个数1. 对于题目的要求可以看出来,总共有26个字母,所以可以用二进制来表示每一个 word 中的出现的字母的种类 (比如 "abc" : 000000...000111 来表示)2. 然后可以用数据结构unordered_map<int,int> 来表示每一种可能的出现的个数,这样对于每一个 puzzle 除去首字母后,进行子集枚举,求和每一.

2021-03-01 09:25:35 475

原创 力扣 227 场周赛第四题 双向 dfs 解决问题

题目描述:题目分析与解答:方法一 : 双向 dfs因为直接进行dfs时间复杂度为:2^40->10^9会STL 所以采用 双向dfs(把数组分成两段来进行考虑):对最大的情况进行考虑分析(即length=40时)(1)对前一半的元素(20个)进行dfs1来得到每一种可能的组合答案(最多2^20=10^6个),并进行排序(2)然后对于剩下的20个进行dfs2...

2021-02-08 21:13:14 202

原创 字典树 模板 整理

字典树代码分析

2021-02-01 18:11:09 89

原创 2021.1.29 每日一题 1631. 最小体力消耗路径 总结 (二分 + 并查集 + 最短路径)

题目描述:做题分析:因为这个月的每日一题差不多都是并查集的类型,所以刚拿到的时候我考虑的也是使用并查集的方法来求解但是一直对题目中相邻格子这个条件不知道如何来判断(即没有看出来应该转化为图模型来求解)还考虑过用动态规划的方法来求解,但是从一个格子出发是有四个方向的,所以转移方法并不好写而100*100的数据量也不可能用暴力深搜来解决,所以重点还是模型的转化 (转化为图模型,然后问题就转为从某一点到另一个点的路径上的最大值的最小值了)1. 最大值的最小值:典型的可以用.

2021-01-29 10:20:59 410

原创 LeetCode 双周赛44场 第四题 5648. 生成乘积数组的方案数

题目描述:5648. 生成乘积数组的方案数题目分析:个人思路竞赛时思路:首先做的时候只是注意到了f(n,x) = n -> x 是质数,想以此为突破点,对于每一个数 num 找到 它的因子 y 来递归求解但是发现这样方法数求解方法数不大好判断所以,还是没有能解决问题学习 acwing_yxc 的解题思路 :(所需要的算法中的知识点都在最底下进行描述)对于 长度 n 数 x:1. 找到 x的全部质因数的个数 : 即 x= p1^a1 * p2^a2 *...

2021-01-25 10:11:58 261

原创 力扣 223 场 周赛总结 并查集 + 状态压缩

力扣 223 场 周赛第三题:1722. 执行交换操作后的最小汉明距离https://leetcode-cn.com/problems/minimize-hamming-distance-after-swap-operations/(相似题目:1202. 交换字符串中的元素https://leetcode-cn.com/problems/smallest-string-with-swaps/)第四题:1723. 完成所有工作的最短时间https://leetcode-cn...

2021-01-18 20:25:33 437

原创 LeetCode 中的某些数据结构写法

""因为做题的时候总是会搞不清楚如何定义和使用一些有用的数据结构所以在此做一个记录 orz""1. 优先队列使用大小顶堆来实现:主要操作 : top(),empty(),push(),pop(),size()最大堆 : priority_queue <int,vector<int>,less<int> > p;最小堆 : priority_queue <int,vector<int>,greater<i..

2021-01-14 15:08:26 259

原创 力扣 42 场双周赛第四题 得到连续 K 个 1 的最少相邻交换次数

主要参考zerotrac题解:https://leetcode-cn.com/problems/minimum-adjacent-swaps-for-k-consecutive-ones/solution/de-dao-lian-xu-k-ge-1-de-zui-shao-xiang-lpa9i/题目描述:思路描述:首先因为根据nums.length 是10^5 数量级,所以暴力的 O(N^2) 的算法一定是不行的首先若要得到K个连续1的序列——1...

2020-12-27 14:20:32 347

原创 三角网格细分算法 —— Loop 算法

三角网格细分算法 —— Loop细分主要参考文章:https://zhuanlan.zhihu.com/p/144400261https://blog.youkuaiyun.com/McQueen_LT/article/details/106136324Loop细分: 是一种专门针对三角形面的细分方法——主要思想就是1个旧三角面片分成4个新三角面片(主要和 CC相类似,利用 新增边点和 更新原始点 来新增模型的三角形网格数量 -> 细分)Loop 细分曲面过程就是插入...

2020-12-26 16:11:42 6605 1

原创 LeetCode 2020.12.24 每日一题 135. 分发糖果

题目描述:我刚开始碰到这个题目的时候,想到的是山脉问题,找到每一个递增和递减的数组段用一个pari<int,int>来存储但是发现写起来的时候就比较繁琐,需要对每一次的增和减都要进行判断和记录,然后我思考的是记录每一次的山脉的最低点(因为最低点一定是分配1个糖果),然后从最低点往两边进行遍历,然后对于每一个最高的山脉点再进行一次判断(因为该点处的糖果值为两边过来的较大值)但是此时我又对相同值的相邻位置为最高点或者最低点的时候 感觉记录起来比较繁琐所以学习了官方的方法..

2020-12-24 11:43:11 113

原创 记录一道经典的二分题- Leetcode 1552. 两球之间的磁力

题目描述:对于这种 最大化的最小 或是 最小化的最大 题目 —— 都可以采用二分的算法来解决(因为以最大化的最小为例 若ans = x,则对于其他的情况一定都小于x,若有其他的情况能产生使ans > x的则说明x不满足要求)相当于告诉你了一个答案的区间,每次对中间的数去尝试解决问题,若能解决则左边界右移,若不能右边界左移(另一种情况同理)所以可以采用对答案所在的区间进行二分来解决以本题为例:首先分析 ans 的l,r分别为多少在那么多个位置中加入m个小球,r = (max..

2020-12-23 20:28:59 250 2

原创 力扣 220 场周赛第四题 检查边长度限制的路径是否存在 并查集 + 离线思维

主要参考 零神zerotrac 和liuyubobobo的题解——“https://leetcode-cn.com/problems/checking-existence-of-edge-length-limited-paths/solution/jian-cha-bian-chang-du-xian-zhi-de-lu-ji-c756/”“https://leetcode-cn.com/problems/checking-existence-of-edge-length-limited-p...

2020-12-20 21:06:25 404 2

原创 CC(Catmull–Clark) 细分

CC 细分 ——> 四边形网格细化" 主要为后面实现BMesh中的体系分做一个前期准备"

2020-12-19 13:42:02 2597

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除