12 2017 档案
摘要:不会Tarjan,难道就不能与邪恶的SCC作斗争了吗? 祭出Kosaraju。 一些变量名的意义: a[N] 原图的vector存储 b[N] 原图的所有边反向vector存储 s dfs得出的拓扑序列栈 c[[N] 每个点的SCC编号 算法框架: 1.将原图做一遍类似于拓扑的dfs,越早访问的顶点
阅读全文
摘要:这显然是一道求强连通分量(SCC)的题目。 只要你正常,都知道应该写Tarjan。 然后(假装会写Tarjan),其实我当然不会。但是求SCC还有另一个算法。复杂度和Tarjan一样,只不过常数大了点而且不为人所知而已。 蓝书和挑战程序竞赛上都有这个算法,好像叫Kosaraju。是不是很拽的感觉。
阅读全文
摘要:好不容易搞来的题目,不写一写怎么行呢。 不过难度真心不高(一小时K掉),都是老题+暴力题,没有欧洲玄学。 再说一句,这试卷是叶可禾出的吧。 T1 好老的题目,看到有多组数据我还怕了,以为有更流弊的算法。没想到减了数据范围。 首先把边sort一遍,因为要求,max-min最小,所以枚举最短边,然后向后
阅读全文
摘要:我会用高级(???)的单调栈来打这道题吗? 线段树即可水过。 假设这个数列刚开始所有数都是0,然后我们每次只要进行一个点的修改和区间求和即可。 这不就是 线段树大法。 只要用一个len记录一下当前数列长度即可 (刚开始智障把求最大数打成求和了,还过样例了) CODE
阅读全文
摘要:这又是一道坑题! 思想进行了大幅转变,并查集炸了之后终于搞出了一种奇葩的算法,终于卡时间A了。 把思路按顺序理一理。 先把边从大到小排序一下。 <1> 看完题目,我去这不是并查集模板么吗,马上敲了个裸并查集,判断两个点如果之前已经联通了,直接退出输出当前值即可。 CODE(WA) 帅气得搞了50分·
阅读全文
摘要:怎么说呢,想通了就是一道模板题了。 自己的数论也很烂,但竟然没有看题解搞了过去(奇迹). 首先对于ax ≡ 1 (mod b); 观察数据范围可以发现b≥2,所以转化成 ax mod b=1 从mod的定义中我们可以看出原方程就是ax-by=1(y是整数) 因为一定有解,然后由裴蜀定理可以知道gcd
阅读全文
摘要:以后平时练习还是写一写吧。 (题目搞来搞去太烦了,直接PDF存起来) T1 水题(???),主要是数据水,正解是设一个阙值,然而根本没人打。(暴力出奇迹) CODE T2 猥琐数学题(???)一定要想到,如果有解那么h[i]+l[j]≡k-a[i][j](mod k) 然后可以每次枚举第一列的数来当
阅读全文
摘要:还以为是什么神坑数论题。 看到题,第一眼想到φ,然后暴力。 然后发现暴力其实是有可能的啦。 一个数的因数个数=所有质因数的次数+1,然后乘起来。 例如 60=2^2*3^1*5^1,so g(60)=(2+1)*(1+1)*(1+1)......(后面都是1)=12。 然后我们就要构造(而不是枚举)
阅读全文
摘要:BZOJ的题目,就是高大上。 然而是一道入门(稍微难一点)的水题。 先读题,发现可以tarjan,对,这很适合tarjan。 然后看数据范围,这不就是。。。暴力枚举+BFS找点。 水题不做多解释。 CODE
阅读全文
摘要:最近在二中苦逼地上课,天天听数论(当然听不懂) 但是,简单的还是懂一点的 1.欧几里得算法 说得这么高级干什么,gcd入门一个月的人都会吧,还需要BB? 证明可参照其他博客(不会),主要就是gcd(a,b)=gcd(b,a%b); 特殊的,gcd(a,0)=gcd(0,a)=a; 然后一行 2.扩展
阅读全文
摘要:(一周没写过随笔了) 这道题有坑! 看到题目,发现这么明显(??)的要求顺序,还有什么想法,拓扑! 将每条路范围内等级大于等于它的点(不能重复(坑点1))和它连一条边,注意起点终点都要有(坑点2),然后拓扑求解即可。 BFS的拓扑感觉更好。 然后打了个map判重交上去帅气的TLE了3个点 然后一想,
阅读全文
摘要:看了题目心中只有一个字——搜索!!! 但是很显然,朴素的搜索(回溯)绝壁超时。 剪枝&优化(要搞很多,要不然过不了) 1:从小到大搜索它们的因数,这样找到就exit。 2:将数据从大到小排序,因为长的是肯定要选的,所以早点选可以减小接下来的可能。 3:如果一组它后面的几组都无法搜出,那么可以直接跳过
阅读全文
摘要:终于没有打模板题了。 一道简单的拓扑题目(但记得以前第一次做的时候爆0了)。 发现这个做事的过程是按一定顺序的,然后如果一个工作的前面没有任何事情的话,它一定先被完成(如果不的话就不能使时间最小化,其实一点贪心的思想)。 然后更新与它有边连接的,再找没有工作的。 就是个拓扑模板(然而调了半小时) C
阅读全文
摘要:方法很多,hash,双hash(个人想到一种三hash),挂链,还有STL; map 乱搞 CODE hash就是将一个字符串映射成一个数。中间的方法有很多,不停地乘上一个seed然后%一下。 然后单hash炸了。 果断双hash!(hash twice)
阅读全文
摘要:终于再过线段树。 参考可禾大神的线段树,然后在down的时候把 add[root*2]+=add[root] 打成了 add[root+2]+=add[root]; 调了一个下午,还被嘲讽。 对于区间修改主要用的是Lazy Tag,把增量延迟下方。 可以达到O(nlogn)。 这次代码里有注释。
阅读全文
摘要:又是模板题呵,但这次的难度有点增加。 先看题目第一个想到DP的经典算法,要O(n^2),然后想其它的算法。 其实我们衢州市一次联考有一题很像这题,不过还要难一点。 思想是离散化+最长不下降子序列(在这里和最长上升子序列等价,因为没有重复的值) 先离散一下第二串里每个点的第一串里的位置(数组也可以,但
阅读全文