摘要: 关于基础知识的预备桥和割点、双联通分量、强连通分量,支配树。(并不会支配树) 关于有向图的Tarjan,是在熟悉不过的了,它的主要功能就是求强联通分量,缩个点,但是要注意一下构建新图的时候有可能出现重边(即使原图没有重边),他还时常和拓扑排序放在一起。eg: #include<cstdio> #in 阅读全文
posted @ 2017-11-08 21:02 TS_Hugh 阅读(343) 评论(0) 推荐(1) 编辑
摘要: 神™题........ 这道题的提示......(用本苣蒻并不会的积分积出来的)并没有 没有什么卵用 ,所以你发现没有那个东西并不会 不影响你做题 ,然后你就可以推断出来你要求的是我们最晚挑到第几大的边会形成最小生成树(可以看成是在Kruskal),然后我就开始YY了(一本正经)。 首先我想到了枚举 阅读全文
posted @ 2017-10-30 07:18 TS_Hugh 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最小生成树我们就一定可以找到他。(证明:首先如果我们没有选最小的边,那么他一定可以踢掉其他的边来使生成 阅读全文
posted @ 2017-10-12 20:06 TS_Hugh 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 我觉得这道题的主旨应该是模拟,但是如果说他是二维链表的話也不為過。這道題的主體思路就是把原來旋轉點的O(n^2)變成了旋轉邊界的O(n)。怎麼旋轉邊界呢,就好像是把原來的那些點都於上下左右四個點連線,形成一個大網,我們要做的就是把要旋轉的正方形的四周的線都剪斷,然後轉一下再練上,實現的話就是二維點化 阅读全文
posted @ 2017-10-08 18:45 TS_Hugh 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治。他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还有一种做法就是对于作用域一整个区间的标记,就将其放置在此区间节点,查询时再结算其贡献,但无论怎样我们 阅读全文
posted @ 2017-10-08 18:00 TS_Hugh 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 合并果子加强版....... 哈夫曼树是一种特别的贪心算法,它的作用是使若干个点合并成一棵树,每次合并新建一个节点连接两个合并根并形成一个新的根,使叶子节点的权值乘上其到根的路径长的和最短(等价于每次合并的代价是合并根的权值和,求最小代价)。实现过程就是每次合并权值最小的两个节点,具体一下就是建个森 阅读全文
posted @ 2017-10-07 07:46 TS_Hugh 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 似乎弗洛伊德和迪杰斯特拉都干不了统计方案数,spfa的话就是不断入队就好。 阅读全文
posted @ 2017-10-01 20:56 TS_Hugh 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 这道题一看有两个出发现点,一枚举点去找边界,想了一会就Pass了...,二是枚举相框,我们最起码枚举两个边界,然后发现平行边界更好处理,然而仍然只有30分,这个时候就来到了链表的神奇应用,我们枚举上界u,下界d在u的基础之上从下往上枚举,我们每次枚举上界的开始就把上界以下的点建成链表(它的形状大概是 阅读全文
posted @ 2017-10-01 20:51 TS_Hugh 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 正解:Cao 据说这样的题是用来骗丛林生物上树的...... 这样的题除了考观察力之外还.........我们发现他异或了opt,恩,就这样,用离线推答案..... 阅读全文
posted @ 2017-10-01 20:36 TS_Hugh 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 又是一道思路清新的小清晰。 观察题目,如果我们确定了平民或者贵族的任意一方,我们便可以贪心的求出另一方,至此20分;我们发现层数十分小,那么我们就也是状压层数,用lca转移,线性dp,至此50分(好像数据很水这么打能A);至今我们没有用到他是一棵完全二叉树,那么我们发现如果进行树dp,也就是说从子节 阅读全文
posted @ 2017-10-01 20:25 TS_Hugh 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 这道题目就是考验了一下图论基本知识与对可爱的代码实现的应对能力。 我们先分析题干信息。我们要形成相框,那么所有的点的度为2(参与的点),那么所有度大于2的点都需要熔断,而且一次完成所有关于这个点的熔断,也就是说将一个焊点变成一堆度小于等于2的焊点,然后我们发现我们这个时候只需要焊接了。由此可知我们熔 阅读全文
posted @ 2017-10-01 19:59 TS_Hugh 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 大家说他是卡特兰数,其实也不为过,一开始只是用卡特兰数来推这道题,一直没有怼出来,后来发现其实卡特兰数只不过是一种组合数学,我们可以退一步直接用组合数学来解决,这道题运用组合数的思想主要用到补集与几何法。 假设以矩形左下角为坐标原点,(以下所说路径均满足只能向右或向上走),我们假设原矩阵为a,那么他 阅读全文
posted @ 2017-10-01 19:30 TS_Hugh 阅读(1032) 评论(1) 推荐(2) 编辑
摘要: 所谓李超线段树就是解决此题一类的问题(线段覆盖查询点最大(小)),把原本计算几何的题目变成了简单的线段树,巧妙地结合了线段树的标记永久化与标记下传,在不考虑精度误差的影响下,打法应该是这样的。 阅读全文
posted @ 2017-09-27 15:12 TS_Hugh 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 堆对于stl priority_queue ,我们自己定义的类自己重载<,对于非自定义类我们默认大根堆,如若改成小根堆则写成std::priority<int,vector<int>,greator<int> >。时间复杂度除了pop push是O(log)外都是O(1)。当然手打会比stl快不少, 阅读全文
posted @ 2017-09-26 20:41 TS_Hugh 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 搜索问题的关键:优秀的搜索策略以及行之有效的减枝 对于这道题我们阶乘搜肯定不行所以我们按位搜,我们对每一位的三个数进行赋值,然后判解。 对于此一类的搜索乘上一个几十的常数来减枝往往要比直接搜要快得多,因为这样的问题他们都会有一个庞大的"之后",而且判断不存在较为容易,以我们多花一些时间进行减枝往往能 阅读全文
posted @ 2017-09-26 17:27 TS_Hugh 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 树状数组一个被发明以来广为流行的数据结构,基于数组,核心是lowerbit()操作。他向前lowerbit()操作为前缀,向后lowerbit()操作为上辖,我们运用树状数组都是使一个由O(1)变为O(log),一个由O(n)变为O(log),有两种类型一种是上辖修改前缀查询,典型的为前缀和,前缀最 阅读全文
posted @ 2017-09-26 17:02 TS_Hugh 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 单调栈不断吞入数据维护最值,数据具有单调性但不保证位置为其排名,同时可以按照进入顺序找出临近较值单调队列队列两端均可删除数据但只有队末可以加入数据,仍然不断吞入数据但同时可以额外刨除一些不符合条件的数据,强调额外刨除数据按照进入顺序,维护在有额外刨除条件下的最值,数据具有单调性但不保证位置为其排名也 阅读全文
posted @ 2017-09-25 17:56 TS_Hugh 阅读(240) 评论(1) 推荐(0) 编辑
摘要: 这道题一开始以为是平衡树结果发现复杂度过不去,然后发现我们一直合并而且只是记录到最低的距离,那么就是带权并查集了,带权并查集的权一般是到根的距离,因为不算根要好打,不过还有一些其他的,具体的具体打。 阅读全文
posted @ 2017-09-20 12:24 TS_Hugh 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 对于最优解我们发现所有的最优解都可以是前多少多少个,那么我们就二分这个前多少多少个,然后用dfs去判解,我们发现在dfs的过程中如果不剪枝几乎必T,所以我们就需要一些有效的剪枝 I. 我们在枚举过程中每个数选什么是有前后顺序的,然而对于一些相同的数他们并没有顺序我们可以记录上个数的选择点,如果两数相 阅读全文
posted @ 2017-09-20 12:05 TS_Hugh 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 这道题明显是异或方程组,然而解不一定唯一他要的是众多解中解为1的数的最小值,这个时候我们就需要dfs了我们dfs的时候就是枚举其有不确定解的数上选0或1从而推知其他解,由于我们dfs的时候先0后1,虽然我们选出的0多最后得到的0不一定多,但至少加上小小的剪枝(例如如果剩下的解全为0也不必已知解多就退 阅读全文
posted @ 2017-09-17 21:40 TS_Hugh 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 这道题就体现了聪明的搜索策略的重要性,如果我们正着搜,判断效率会明显下滑,所以我们就采用倒着搜索。(其实很玄学.....) 阅读全文
posted @ 2017-09-17 21:32 TS_Hugh 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 这道题是典型的数搜索,讲究把数一层一层化小,而且还有最重要的大质数剪枝。 阅读全文
posted @ 2017-09-17 21:29 TS_Hugh 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 这个题我在考试的时候把所有的转移都想全了就是新加一个点时有I.不作为II.自己呆着III.连一个IV.连接两个子树中的两个V连接一个子树中的两个,然而V我并不会转移........ 这个题的正解体现了一种神奇的思想,对于好合并但是不好转移的dp我们可以先打散然后合并到最后,所以我们从一开始维护f[i 阅读全文
posted @ 2017-09-15 21:47 TS_Hugh 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 我一开始想的是倒着来,发现太屎,后来想到了一种神奇的方法——我们带着一个既有期望又有概率的矩阵,偶数(2*id)代表期望,奇数(2*id+1)代表概率,初始答案矩阵一列,1的位置为1(起点为0),工具矩阵上如果是直接转移那么就是由i到j概率期望都乘上1/alphabet,特别的,对于一个包含禁忌串的 阅读全文
posted @ 2017-09-15 21:40 TS_Hugh 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 关于AC自动机:一个在kmp与Trie的基础上建立的数据结构,关键在于Trie树结构与fail指针,他们各有各的应用。在AC自动机里最典型的就是多串匹配,原本效率为O(n*l+n*l+m*l),(n是模式串个数,m是匹配串长度,l是模式串平均长度),那么他的效率甚至有时不如多个kmp,虽然很好被卡但 阅读全文
posted @ 2017-09-13 21:16 TS_Hugh 阅读(133) 评论(0) 推荐(0) 编辑