- 博客(26)
- 收藏
- 关注
原创 牛客算法竞赛入门班笔记7
完结篇,终于完结了,所以我现在入门了?树上倍增和树链剖分树上倍增就是利用二进制拆分一次跳跃尽量多的距离,用一个fa数组维护每个点第2^i层父亲是谁。这样我们就可以把之前暴力每次跳到直接父亲的操作优化到每次尽可能地跳最远的2^i层父亲,从而把n优化到logn,但是倍增虽好,它只能处理离线问题,如果涉及到在线修改,在线查询那么倍增的局限性就出来了,因此就引出了下面的算法:树链剖分。树链剖分就是把一棵树解剖成一条条链,并把其中某些链反映到线段树上维护一些链的属性。具体来说,就是把结点分为重儿子和轻儿子
2022-04-28 14:13:58 388
原创 浅谈背包问题
算法课的小作业,写了挺多就发掉吧,应该写的挺详细的(。浅谈背包问题定义:背包问题是运筹学中的一个经典的优化难题,是一个 NP-完全问题,但其有 着广泛的实际应用背景,是从生活中一个常见的问题出发展开的: 一个背包,和很多件物品,要在背包中放一些物品,以达到一定的目标。(摘自《2008年国家集训队论文——浅谈几类背包问题(徐持衡)》)0-1背包0-1 背包问题:给定 n 件物品和一个背包。物品 i 的价值是 Wi ,其体积为 Vi,背包 的容量为 C。可以任意选择装入背包中的物品,求装..
2022-04-26 13:32:42 1408 2
原创 牛客算法竞赛入门笔记6
RMQ与LCA这章真的是题目难,代码量还大,动不动就快200行了,呜呜呜。LCA:树上问题通过dfs序转化成区间问题(一般都是dfn序)P3379 【模板】最近公共祖先(LCA) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题意:LCA模板题第一种做法:dfs序将LCA问题转换为RMQ问题,我们先用dfn序给每个结点标上序号,再用dfs求出树的欧拉序列,然后保存下每个数第一次出现在欧拉序列中的位置,两个数的LCA即为..
2022-04-25 16:57:24 543
原创 图论错题集2
Problem - H - Codeforces铜牌题题意:给你一张无向图,点权代表你到达这个点时能获得的能力值,边权代表你当前必须拥有大于等于该边权的能力值你才能经过这条边,现在有q次询问,问每次从x位置以初始能力值y出发最多能获得多少能力值(可以反复经过点和边,但是点上的能力值只能获得一次)思路:首先要考虑到如果某些边构成了一个环,那么这个环中最大的那条边是没有用处的,所以我们应该转化成一颗最小生成树去求解(vp的时候就到此为止了,呜呜呜),然后涉及到一个知识点:kruscal重构树,不..
2022-04-21 20:25:27 375
原创 图论错题集1
已见过知识点:链式前向星,floyed,dij,spfa,prim,kruscal,拓扑排序,强连通分量,差分约束,johnson全源最短路,次短路,二分图最大匹配、最小点覆盖,割点和桥,最大流,lca,rmq,st表,树上倍增,kruscal重构树见过的技巧:反向建图,黑白染色,点权转边权,加平台点,权值01化,边化点(kruscal重构树),反向bfs,拆点踩过的坑:nmd,给我仔细看好每个数组应该开多大!!!写lca的时候数组尽量多开一点,不然会寄,而且开得多跑得还..
2022-04-11 17:19:53 335 1
原创 牛客算法竞赛入门笔记5
终于来了,线段树与树状数组,咱们先浅浅地发一点,更多问题敬请期待(。再浅浅地描述一下线段树:啥是线段树呢?其实就是一种区间数据结构,它是一颗树的样子,但是每个节点维护的是某一个区间的属性,根节点维护的整个区间,每个节点有两个孩子,分别维护父亲区间的左半段和右半段,这样我们就可以通过区间的拼接完成O(logn)地访问区间的属性,而区间的修改操作也同样可以O(logn)地完成,只不过在每次区间修改时,如果我发现当前这个区间已经是我要修改的大区间的一个子区间了,那么我们就没有必要再往下走去修改每个单点..
2022-03-10 15:50:34 912
原创 洛谷P4742[Wind Festival]Running In The Sky题解
题目链接:[P4742 Wind Festival]Running In The Sky - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)考点:dp,拓扑排序,tarjan缩点这一道题我写了整整三天,三天啊,你知道我这三天怎么过的吗?!题意:一张有向图,每个点有一个权值,计算图中总权值最大的路径(图中可能有环,重复经过同一个点只计算一次权值),并计算这条路径中最大的单点权值是多少。第一天:硬写拓扑,自然是wa,因为有环,所以去学了tarjan,但是还是wa第二
2022-03-02 16:11:39 293
原创 牛客算法竞赛入门笔记4
别问为什么没发树型dp和状压dp,因为我不是负责这块的,所以就做了一些例题略微了解了一下,没有发的必要,下面的图论是我负责的,先放一点比较经典的题目,也是雨巨拉的例题,后面应该会按题型发更多的图论(等这个入门班的笔记完结后)。公交线路 (nowcoder.com)板子题:链式前向星+堆优化dij(复杂度:O((n+m)logm )链式前向星详解:深度理解链式前向星ACdreamer-CSDN博客链式前向星(其实就是静态链表)#include <bits/stdc++.h&g...
2022-02-25 21:22:16 914
原创 2022牛客寒假算法基础集训营3
当天去走亲戚了,后来自己vp了一下,只能说逃过一劫,这场真阴间(呜呜呜,被智乃哥哥杀爆了),赛中6赛后8,估算rank在450名左右,打了估计掉分A:签中签,0B:背包,6(1)C:dp(补)D:签到,2E:模拟,175(6)G:数据结构(补)I:尺取,107(5)L:stl+模拟,30B:智乃买瓜这题本质就是一个分组背包,每种物品三个操作:选,不选,选一半,其实就是一组里面三个物品,0,整个,半个。至于我为什么wa1,哈哈,忘了取模,棹,前两场每场都因为这个wa过.
2022-01-30 07:39:53 1385
原创 2022牛客寒假算法基础集训营1
它来了,它来了,牛客寒假算法集训营来了,第一场算是个热身场,题目难度不算很大,我这种fw都能赛中7赛后8(虽然有一题求助了队友),挑两题写个题解A-九小时九个人九扇门数论题,我看到题面就去百度了数字根,确实有一个相关定理:九余定理,即一个数的数字根==这个数对9取模(特别的,取模得0则数字根为9)。知道这个结论,再套一个01背包这题就a了,比赛时没多想,拿着结论就写了,这里简单推导一下九余数定理:为了便于理解,我假设A是一个三位数,那么它就可以写成A=a1(100)+a2(10)+a3.
2022-01-25 09:29:12 598
原创 矩阵取数游戏题解(区间dp)
NOIP2007 提高组 矩阵取数游戏哎,题目很狗,第一次踩这个坑,单拉出来写个题解记录一下题意:给一个数字矩阵,一次操作:对于每一行,可以去掉左端或者右端的数,得到的价值为2的i次方乘这个数,i为第i次操作(从1开始),问最后能得到的最大价值是多少思路:区间dp,首先要考虑到行与行之间是没有影响的,所以我们可以每一行每一行单独处理,对于每一行来说,每一个状态具有的属性无非是当前剩下的数的区间和形成这个区间已经得到的价值,因此定态就是dp[i] [j]代表这一行还剩下i~j这些数的时候得到的最.
2022-01-14 23:06:58 2983
原创 D - Linear Probing题解
D - Linear Probing (atcoder.jp)我必须写一篇题解来发泄我一下,这题做了快一个半小时,wa了十几次,结果最后发现了一个无比愚蠢的错误题意:给一个初始都为-1的长为2^20的数组,两种操作:1-给一个数字x,从这个数组的第x位(x如果大于数组长度就取模)开始往后找到第一个为-1的位置(最后一个的下一位是第一位)赋值成x2-询问该数组第x个位置的值思路:一开始写了个离散化+暴力,但是最坏的复杂度会到O(n^2),后来一想,离散个der,这个数组大小只有1048..
2021-11-21 09:54:28 898 2
原创 2021-11-19周赛总结
A:A (codeforces.com)前几天桂林的签到题,那场我当了志愿者,有个队伍一分钟过了这道给我看傻了,然后我直接经典复刻,一分钟a了,就是3局两胜五局三胜,输出2n-1就行了B:Problem - 940E - Codeforces题意:给你一个数组和一个数c,要求你把这个数组分成若干连续子串,每个串内删掉最小的[k/c]个数(k为串的长度)问怎么样能让剩余数的和最大思路:首先要让剩下的数最多肯定尽可能多删除一些数,所以我们分出的每个区间的长度都要尽量是c的倍数,那
2021-11-20 10:52:52 387
原创 牛客算法竞赛入门笔记2
优先队列、并查集Running Median (nowcoder.com)题意:给你n个数,算出前i个数的中位数。这题挺善良的,只让输出奇数个的时候的中位数,不然可太麻烦了,我们维护两个优先队列,一个代表小于中位数的值,一个代表大于中位数的值,这样中位数永远都是数量较大的那个队列的队首元素,但是添加的时候要注意,一次添加两个,不然偶数个的时候就不知道中位数是谁了,这也就是为什么我说这题还做了个人。添加完之后要记得维护一下这两个队列的大小关系,让他们的元素数量差不超过1,这样才能保证一定取到中位数
2021-11-17 20:59:53 4322
原创 牛客算法竞赛入门笔记1
2021-10-20:昨天开的新坑,看了前几集感觉还可以,后悔为什么没早点跟着学,以前就感觉到了自己的知识体系太散了,这个课好像是11月还是12月结束,她说能达到icpc铜牌水平,我姑且相信好吧,希望跟着学完能有点进步,不求铜牌,cf先能上个1500吧呜呜呜。# 模拟,枚举与贪心字符串 (nowcoder.com)尺取法(说实话这可能是我第一次见到这个做法,或者第一次知道它的学名),正常暴力想法应该是枚举两个端点,但是这里的右端点其实不用后退,想一下就知道了,因此只要两个端点差速右.
2021-11-17 20:55:02 497
原创 2021-11-12周赛总结
周赛总结A:Problem - 1334C - Codeforces贪心题,xs,我一眼看上去就认定这题是dp,然后果断放弃,比赛结束问hls转移方程是什么,结果hls告诉我是贪心,呜呜呜(虽然感觉我也贪不出来)题意:一些怪兽,每个有两个属性:血量和死后的爆炸伤害,他们围成一个环,前一个死后爆炸会对后一个造成爆炸伤害(会连锁),问最少要手打多少血量才能全打死。思路:假设我第一个打爆了第i个怪兽,那么我下一次要去打爆的怪兽一定是第i+1个,因为无论如何我这第i+1个怪兽都是要被打爆
2021-11-13 10:21:34 263
原创 [NOIP2002]字串变换题解
题目链接:[NOIP2002]字串变换 (nowcoder.com)题意:给你一个初始字符串和一个目标字符串,还有一些变换规则,问你用这些变换规则最小要多少步可以将初始字符串变为目标字符串。看体面感觉没什么,而且数据范围也不大,我直接写了一个bfs,交了,洛谷上过了(P1032 [NOIP2002 提高组] 字串变换 - 洛谷),但是牛客没过,t了,这就很离谱了,我应该说牛客数据很顶还是说洛谷数据太水了呢,而且洛谷上这题还是还是绿题(?思路:既然单向搜索t了,那就改成双向搜索,题目中说十步之内.
2021-11-11 07:43:30 352
原创 kmp算法详解
最近数据结构课上讲到了kmp,我就来复习一下,毕竟暑假的时候搞了一整天,太折磨了,所以还是有一些心得的。首先,我默认大家都会暴力的做法了啊,我就直接进入正题。所谓kmp,其实没有那么复杂,目的是在a串中找到b串第一次出现的位置,方法总结下来就一句话:充分利用模式串(目标串)的特性,减少匹配次数。那什么叫做模式串的特性呢,咱们先看第一个例子:待匹配串(A):abcabcde模式串(B):abcde首先我们还是和暴力的思路一样从第一位(A[0],B[0])开始匹配,直到下面这个情况:
2021-10-26 21:13:23 275 3
原创 D - 8 Puzzle on Graph题解
atcoder上的一题,感觉挺有意思的就写一下题解,别问我为什么当时没做出来,因为我C题(暴力枚举判断三角形)写爆了,*****,掉大分。题目链接:D - 8 Puzzle on Graph (atcoder.jp)题目大意:就是最强大脑里的数字华容道的改版,给你一个3*3的方格阵,有一个空着的,给出初始状态,但是这些方块不能随意移动,他们只能通过给定的凹槽间的边来移动,求出还原成标准状态(数字按大小排好序,如图二,只不过改成了3*3的)最少的移动步数其实翻译一下就是一张无向图有且仅有.
2021-10-24 17:13:52 2944 1
原创 动态规划博客2
[P1020 NOIP1999 普及组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)Dilworth定理:偏序集的最少反链划分数等于最长链的长度人话:浅谈Dilworth定理 | cmwqf's blog(虽然我人话也看不懂)主要还是重温一下LIS#include <bits/stdc++.h>using namespace std;vector<int>x;int main(){ int n; ...
2021-10-16 13:48:15 142
原创 动态规划入门训练1
动态规划博客这两周练习动态规划首先是动态规划的概念,动态规划在我看来就是用已经得到的结论去推导出新的结论的思想,像是递推,前项怎么推出后项记忆化搜索学习dp一般都是从记忆化搜索引入何为记忆化搜索,直接上例题[P1002 NOIP2002 普及组] 过河卒经典过河卒,看到这题n<20我毫不犹豫地写了个dfs,自信满满地交了上去,就这?啪,60,纳尼?居然tle了,没办法,想想怎么优化吧,我在脑中稍微模拟了一下这个过程发现我们很多次搜索同一个点,而一个点一旦被搜索过了,它的答案
2021-10-01 20:34:40 209 1
原创 Codeforces Round #724 (Div. 2) C. Diluc and Kaeya题解
题目如下:The tycoon of a winery empire in Mondstadt, unmatched in every possible way. A thinker in the Knights of Favonius with an exotic appearance.This time, the brothers are dealing with a strange piece of wood marked with their names. This plank of woo
2021-09-27 07:17:19 381
原创 算法基础-贪心
贪心所谓贪心就是只做出当前情况下的最优选择,不考虑将来的思想方法。显然,贪心是有可能出错的,因此我们需要在猜想贪心策略后去证明它(虽然我都是直接交(bushi))证明方法贪心算法有两种证明方法:反证法和归纳法。一般情况下,一道题只会用到其中的一种方法来证明。 反证法:如果交换方案中任意两个元素/相邻的两个元素后,答案不会变得更好,那么可以推定目前的解已经是最优解了。 归纳法:先算得出边界情况(例如 )的最优解 ,然后再证明:对于每个 , 都可以由 推导出结果。 邻项交
2021-09-16 22:00:09 291
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人