数论初级魔法大赏 最近在准备关于莫比乌斯反演的课件,准备把例题简要整理下来,那就开始吧 [1.bzoj 2190 SDOI2008]仪仗队 求2+∑x=1n−1∑y=1n−1[gcd(x,y)==1](n≤40000)2+\sum_{x=1}^{n-1}\sum_{y=1}^{n-1}[gcd(x,y)==1](n\le 40000)2+∑x=1n−1∑y=1n−1[gcd(x,y)==1](n≤40000) 2019-06-05 算法学习 #时间复杂度 #数论 #莫比乌斯反演
枚举算法再放送 再 放 送 4月24日的时候我讲了这学期程序设计与算法实践的第一课,内容包括算法时间复杂度的概念,枚举与递归等。其中关于枚举这方面还是比较有意思的,从易到难总结了三道题目枚举题,其他的内容就是老生常谈了。实际上枚举算法看似简单又不能很轻易掌握,因为枚举也是有技巧与策略的。在一道具体的题目中,暴力的枚举很可能行不通,但是聪明的枚举往往能起到“四两拨千斤”的效果。 练习题目 1.素数判定 定义一个数是 2019-04-29 算法学习 #枚举
怀念金庸 今天是金庸诞辰95周年。想起来2018年10月30日的上午,又或许是前一天晚上,我突发兴致,决定把天龙八部再读一遍,当时还在想不知金庸先生现况如何。 然而晚上即闻金大侠仙逝的噩耗… 世事无常啊,当晚为此难受了很久。 过去四个月,我先后读了《天龙八部》、《射雕英雄传》、《神雕侠侣》、《倚天屠龙记》、《笑傲江湖》,深感收获良多。于是我把读书时的所思所想写到了哲学入门课程的期末论文里。文章结合哲学导论 2019-03-10 个人随笔 #金庸
cdq分治+可撤销并查集 [1.bzoj 3237 Ahoi2013]连通图 题意:给一个连通的无向图,无重边无自环,kkk个询问,每次询问给出不超过444条原图中的边,问将这些边删掉后,无向图是否还是保持连通。一个图是连通的当且仅当任意两个不同的点之间存在一条路径连接他们。 做法:cdq分治+可撤销并查集。每次先加入在右半区间且不在左半区间的边,递归到左半边,撤销,再加入在左半区间且不在右半区间的边,递归到右半边,撤销。 2019-02-26 算法学习 #cdq分治 #并查集
诗词中的汉字文化 这篇文章是我上学期汉字文化课的期末作业,为数不多的写作机会,主要是最近两三个月的所思所想。以下是原文: 生活中经常会看到一部分喜欢写诗的同学,把自己写的诗发到朋友圈,往往是用词显得十分古风文雅,或者华丽至极,还可能用上几个典故,最后配上一幅美图,随之就能骗来一堆人的称赞。但如果了解一些近体诗创作的话,就会发现,写的毫无美感。下面是随便在网络上找的一首,作者不详: 月明星稀残枝静,乌鹊寒鸦南北飞 2019-02-25 个人随笔 #诗词
bzoj 3569 DZY Loves Chinese II 题意:给一个nnn个点mmm条边的(连通)无向图,qqq个询问,每次询问给出kkk条原图中的边,问将这些边删掉后,无向图是否还是保持连通。一个图是连通的当且仅当任意两个不同的点之间存在一条路径连接他们。N≤100000,M≤500000,Q≤50000,1≤K≤15N\le 100000,M\le 500000,Q\le 50000,1\le K\le 15N≤100000,M≤500000,Q≤ 2019-02-18 散装题解 #随机化
小清新线段树 小清新线段树的概念是由jiry_2提出的,区别于zkw(重口味)线段树命名。这里我的理解是可以归为一类结合时间复杂度分析以及懒标记应用的非传统线段树。不过既为非传统,这类题目总体来说还是做法各异,下面就结合题目做一些分析。 入门难度 1.bzoj 3211 花神游历各国 区间求和,区间开根号(下取整) 因为只有开根号操作,所以最后不是1就是0,且一个数开根号次数O(loglogC)O(loglo 2018-11-08 算法学习 #线段树 #时间复杂度
一类区间分治技巧 对于一类区间询问问题,如果可以离线并且可以快速合并区间信息那么就有一个非常实用的分治方法。首先我们对总区间分治下去,当前区间[l,r][l , r][l,r]中点为midmidmid,那么我们将所有的询问分成三类,一类包括midmidmid这个点,一类完全在左侧,一类完全在右侧,我们只要在当前这层解决第一类的所有询问,后两类分治下去即可。怎么快速的求呢?方法也非常简单,因为信息可以快速合并,那么我 2018-10-30 算法学习 #分治
高维前缀和 问题的引入 一个n×mn \times mn×m二维矩阵AAA的前缀和SSS,一般来说定义为Sx,y=∑i=1x∑j=1yAi,jS_{x,y}=\sum_{i=1}^{x}\sum_{j=1}^{y}A_{i,j}Sx,y=∑i=1x∑j=1yAi,j。 代码常见的写法就是用容斥加加减减: 123for(int i=1;i<=n;++i) for(int j=1;j<= 2018-10-29 算法学习
线段树优化凸壳 Lena and Queries 题目链接:http://codeforces.com/contest/678/problem/F 三种操作,1.插入一个点(x,y)(x,y)(x,y) 2.删除之前第iii个操作插入的点 3.给一个qqq,询问在已有点中qx+yqx+yqx+y最大是多少 如果没有删除完全可以cdq分治然后在上凸壳上三分。有删除操作的话因为贡献不独立,所以不能cdq分治。 但是可 2018-10-09 算法学习 #线段树