摘要: 就是考了一个fail树的神奇应用我们建出fail树之后,发现我们就是在求y到根的路径上所有的点在以x为根的子树里的个数,这个我们离线后用树状数组+dfs序即可解决 阅读全文
posted @ 2017-09-13 20:51 TS_Hugh 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 考试的时候由于总是搞这道题导致爆零~~~~~(神™倒序难度.....) 考试的时候想着想着想用状压,但是觉得不行又想用区间dp,然而正解是状压着搞区间,这充分说明了一件事,状压不是只是一种dp而是一种用用二进制表示状态的方法,之前打的状压dp只不过是在线性dp的时候用了这种方法。 我们发现对于一个固 阅读全文
posted @ 2017-08-15 21:05 TS_Hugh 阅读(419) 评论(0) 推荐(1) 编辑
摘要: 这道题随便弄几个数就发现是卡特兰数然而为什么是呢? 我们发现我们在增加一列时,如果这一个东西(那一列)他就一格,那么就是上一次的方案数,并没有任何改变,他占满了也是,然后他要是占两格呢,就是把原来的切成了n-2,和1,要是就剩一格呢,也是把原来的切成一格和n-2,因为如果一行的某一列被堵了那么这一行 阅读全文
posted @ 2017-08-15 06:59 TS_Hugh 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 我bitset+二分未遂后就来用ExGCD了,然而这道题的时间复杂度还真是玄学...... 我们枚举m然后对每一对用ExGCD判解,我们只要满足在最小的一方死亡之前无解就可以了,对于怎么用,就是ax+by=c,在这里c是距离差,a是速度差,b是m,x是我们要的解,y随意。 时间复杂度O(m*n*n* 阅读全文
posted @ 2017-08-15 06:25 TS_Hugh 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 我们先把所有三角形用排列组合算出来,再把一行一列上的三点共线减去,然后我们只观察向右上的三点共线,向左上的乘二即可,我们发现我们如果枚举所有的两边点再乘中间点的个数(GCD),那么我们发现所有的两边点都会形成一个矩形对角线,而且他们的形状一定则贡献一定那么我们可以枚举形状来求贡献和。 阅读全文
posted @ 2017-08-15 06:12 TS_Hugh 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 对于这样看起来不像什么算法也没什么知识点的题,一脸懵逼的话不是手推规律就是打表找规律......... 当然还有一些超出你能力之外的数学题...... 阅读全文
posted @ 2017-08-13 19:54 TS_Hugh 阅读(326) 评论(0) 推荐(0) 编辑
摘要: biubiu~~~ 这道题我一眼就以为是线段树优化dp并且有了清晰的思路但是发现,我不会线段树区间平移,我以为只是我不会,然而根本就不行........ 正解是把序列排出来然后我们让他们减去他们的下标之后求最长上升子序列。 阅读全文
posted @ 2017-08-13 19:48 TS_Hugh 阅读(420) 评论(0) 推荐(0) 编辑
摘要: biubiu~~~ 这道题就是预处理,我们就是枚举每一个数,找到左边比他大的数的个数以及其对应的区间,右边也如此,我们把左边的和右边的相乘就得到了我们的答案,我们发现这是O(n^3)的,但是实际证明他能A,分析证明他的时间复杂度是较小的,这个故事告诉我们,对于一些估计的时间复杂度,如果我们估计得太草 阅读全文
posted @ 2017-08-13 19:35 TS_Hugh 阅读(298) 评论(0) 推荐(0) 编辑
摘要: biubiu~~ 这道题实际上就是优化模拟,就是找到最先死的让他死掉,运用时间上的加速,题解上说,要用堆优化,也就是这个意思。 对于链表,单项链表和循环链表都不常用,最常用的是双向链表,删除和插入比较方便。 所谓挂链就是把链表中的值域换成一坨别的东东西...... 阅读全文
posted @ 2017-08-13 19:18 TS_Hugh 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 由于树规做的少所以即使我考试想出来正确的状态也不会转移。 一般dp的转移不那么繁杂(除了插头.....),即使多那也是清晰明了的,而且按照树规的一般思路,我们是从下到上的,所以我们要尽量简洁地从儿子那里的状态转移过来。 I.我们定义状态数组f[i][0/1],f[i][0]表示在以这个点为根的子树里 阅读全文
posted @ 2017-08-10 21:27 TS_Hugh 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 这道题大家都用的分块,然而我发现这是一个经典算法:区间染色问题。 我们区间染色时把区间分成若干连续的颜色段,然后我们每次染色删除原来的颜色段插入新的颜色段。 我们发现我们的时间复杂度直接与我们要染色区间内的颜色段数有关,而且颜色段数就等于我们要处理的区间内的分界点+1,我们可以证明我们处理的分界点数 阅读全文
posted @ 2017-08-10 20:19 TS_Hugh 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 这道题看题意是在求一个二维最小瓶颈路,唯一可行方案就是枚举一维在这一维满足的条件下使另一维最小,那么我们就把第一维排序利用A小的边在A大的情况下仍成立来动态加边维护最小生成树。 阅读全文
posted @ 2017-08-10 19:54 TS_Hugh 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 可持久化并查集我觉得就是可持久化数组的一种应用。可持久化数组,顾名思义,就是有历史版本的数组,那么如果我们暴力修改储存的话,修改O(n)查询O(1),空间O(n*m),这样肯定不可行,那么我们发现主席树有这样的功能,他可以快速复制,修改O(log),查询O(log),空间(m*log),是一个可行的 阅读全文
posted @ 2017-08-09 21:38 TS_Hugh 阅读(198) 评论(0) 推荐(0) 编辑
摘要: biubiu~~~ 这道题卡读题卡得很死......首先他告诉我们读循环的时候要顺着圈读,然后又说这个圈在数列上要以最大数开始读,而且以这样的循环的首数排序,得到的序列与原序列一样那么他就是可行序列,所以我们发现任何一个可行序列他的循环一定是连续的一块,因为假设我们有一个循环 x->y->z->a- 阅读全文
posted @ 2017-08-09 20:41 TS_Hugh 阅读(477) 评论(1) 推荐(1) 编辑
摘要: biubiu~~~ 我用平衡树处理的这道题,然而这种方法还是要看评测姬..... 正解是乱搞....就是枚举每一位数作为中位数,比他小的看做-1比他大的看做1,那么我们从一开始就有了一个绵延的山,我们记录这个数之前出现过的距水平线高度差,如果我们在右边找到了这个同样的距离就意味着我们中间的操作为0那 阅读全文
posted @ 2017-08-09 20:21 TS_Hugh 阅读(241) 评论(0) 推荐(0) 编辑
摘要: biubiu~~~ 正解是线段树维护真值表,但是我觉得对于这道题来说乱搞就够了....... 我们发现如果我们把每一个数都一开始取反就会发现对于最后结果来说 x=x^1,x nand x=x|x ,x nand x nand x=x|x^1|x,x nand x nand x nand x=x|x^ 阅读全文
posted @ 2017-08-09 20:12 TS_Hugh 阅读(188) 评论(0) 推荐(0) 编辑
摘要: biubiu~~~ 我们发现按照这道题的题意我们把一个个人的前后(欠钱,被欠钱)都缩一下,那么他对其他人没有影响,那么我们就可以依次缩完每个人,而且每个人最后的状态都是要买欠要么被欠,那么我们可以知道他的钱数而且一下子就知道了........... 论数据范围把10^6看成106的悲伤....... 阅读全文
posted @ 2017-08-09 19:57 TS_Hugh 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 这道题,又是一位玄学搜索...... 我是用的蜗牛序搜的(顾名思义,@,这么搜),我正着搜80然后一反转比原来快了几十倍........一下AC....... 我的思路是这样的话我们可以从内到外或者从外到内搜索,这样的话我们就可以在一定程度上运用贪心,因为中间的价值大外面的价值小,我是作为一个从来没 阅读全文
posted @ 2017-08-09 19:45 TS_Hugh 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 这道题硬是让我用STL水过.......而且题解里说的什么双向宽搜,交替扩展............... 这道题反正,STL用就用吧,但是状态数可以卡到千亿级别,因为这个东西是阶乘扩展的,然后我们发现他的深度会极大地影响状态数,然而如果我们把深度缩小为0.5倍,那么他的状态数也就是百万级别的,所以 阅读全文
posted @ 2017-08-09 19:21 TS_Hugh 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 搜索的最广泛应用优化——剪枝 这道题的dp和贪心都是无正确性的,所以,搜~~~~~~~ 搜的时候你发现不剪枝极容易被卡掉(然而良心NOIP没有这么做,不剪枝仍然飞快),所以我们需要一些玄学的剪枝最常见的有俩:I.我们一层一层累加被感染人群若当前被感染人群已经大于已知解那么就舍去。 II.之后的每一层 阅读全文
posted @ 2017-08-09 19:11 TS_Hugh 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 这个题我是冲着卡特兰数来的所以就没有想到什么dp,当然也没有想到用卡特兰数的原因........... 你只要求出前几项就会发现是个卡特兰数,为什么呢:我们选择地时候要选择奇数位和偶数位,相邻(一对里面)奇数位小于偶数位而且他们内部分别递增,那么就是在一个1~2*n的数列上选取一些书作为左括号,一些 阅读全文
posted @ 2017-08-08 07:39 TS_Hugh 阅读(276) 评论(0) 推荐(0) 编辑
摘要: biubiu~~~ 这道题,考场上上来就dp然后发现怎么优化也不行.............最后发现是贪心............. 正解:带反悔的贪心,原理是,假设我们现在得到了取i个的最优解那么我们取i+1个的时候要么是新取一个要么把原来取过的点取反(间隙与所选)。我们把所有点从大到小选,这个过 阅读全文
posted @ 2017-08-07 21:49 TS_Hugh 阅读(338) 评论(1) 推荐(0) 编辑
摘要: biubiu~~~ 对于这道傻题.........我考场上退了一个多小时才推出来这个东西是排列...........然后我打的dfs效率n!logInf正好n=9是最后一个能过的数结果前三个点的n全是10,然后这题全场爆零......... 我在考场上试了很多种方法发现只有排列可以对样例...... 阅读全文
posted @ 2017-08-07 21:24 TS_Hugh 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 这个其实就是在说明相邻的点不能取,我们发现只要其满足这个条件他总能走出来,那么我们就最小割就是了,我们先黑白染色,S 一排黑点 一排白点 T 对于相邻的点我们就直接中间连INF,于是就满足只要一个点选了,另一个点就不能选,我们跑完最小割就得到了满足相邻的点要么都选要么只选一方的最下舍弃。 阅读全文
posted @ 2017-08-05 08:43 TS_Hugh 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 我们感性可证离散(不离散没法做),于是我们就有了状态转移的思路(我们只考虑单不减另一个同理),f[i][j]到了第i块高度为j的最小话费,于是我们就可以发现f[i][j]=Min(f[i-1][k])+|a[i]-j|(k<=j),于是我们的思路就去了各种数据结构…….然后我们发现对于这些转移就是在 阅读全文
posted @ 2017-08-05 08:40 TS_Hugh 阅读(193) 评论(0) 推荐(0) 编辑