
===专题===
文章平均质量分 68
DQSSS
蒟蒻
展开
-
【专题】线段树&&树状数组
算是复习吧…先简单的说一下。 两者都是执行对区间操作。 先说树状数组:树状数组相当于前缀和优化,所以不满足区间减法的不可以维护(比如说RMQ),所以说一般拿树状数组来维护区间和。但树状数组一般都是做【区间修改点查询】或者【点修改区间查询】,虽然也可以做到【区间修改区间查询】但不好想……总之树状数组的局限性比较大。 但为什么要学呢? 比线段树常数小啊!并且代码就那短短几行!!咳咳,然后说一下线原创 2015-09-02 22:28:13 · 814 阅读 · 0 评论 -
【笔记】树的分治
暑假的时候WTH大神就讲过思想了QAQ(顺带Orz Fuckstrom 自悟)树的分治,简单地说,就是把树分为好几个,对于每个递归处理后,再计算整棵树的答案,也就是序列上的分治思想放到了树上。树的分治分为点分治和边分治。点分治,即为把某个点删除后,树分为好多棵,对那些树处理然后计算答案。边分治即割掉边,把树分为两棵,然后进行处理。点分治中被删除的点应该选重心,这样树最多被分logn次,若每次处理当前原创 2015-12-29 20:13:39 · 877 阅读 · 0 评论 -
【笔记】Link-Cut-Tree
动态树问题。维护一个森林,支持树上动态查询、修改、删边、加边、换根等等,但始终保持是一颗树。我学的主要是路径查询和修改。貌似路径和子树不能兼顾…但有一个很厉害的数据结构叫Top Tree,能同时兼顾,听起来好厉害,资料也不多,并没有学…好了,来说一下正题。先想一下树链剖分,引入了轻重链剖分的思想,可以高效地做树上查询&&修改操作,但不能加边删边,也就是相当于一个“静态树”。而动态树,也引入了把树剖成原创 2016-01-05 19:27:01 · 862 阅读 · 4 评论 -
【模板】【笔记】字符串相关
昨天开始学的…随便写点记录一下以免忘了… 因为学的比较混乱,欢迎在评论互相交流,欢迎打脸KMP这是复习…求nxt数组这个DP,思想好好想想就没问题,代码好好看看就没问题,不难会了这个,才能继续往下学…void getnxt(char s[]){ nxt[0] = nxt[1] = 0; int l = strlen(s); for(int i = 1;i < l;i ++原创 2016-02-25 20:25:01 · 892 阅读 · 0 评论 -
【笔记】二分图、网络流相关
二分图这里的证明都是大概只有我能看懂的不严密证明…最小点覆盖=最大匹配概念:二分图中选最少得点,使其覆盖所有的边。可以贪心地去选点,使点出现在最大匹配上。最小边覆盖=顶点数-最小点覆盖概念:二分图中选最少的边,使其覆盖所有点。首先可以贪心地选最大匹配上的边,因为这样可以一条边覆盖两个点。剩下的点只能由其他边一条边覆盖一个点了。设最大匹配数为m,选的其他边的数量是a,满足2m+a=n,答案是m+a=n原创 2016-03-07 10:21:40 · 986 阅读 · 0 评论 -
【模板】【笔记】数论各种姿势等等
数论的东西比较烦…最近脑子有点乱,学一点就赶紧记下来,以免忘了……先贴个线性筛:void shai(){ for(int i = 2,tot = 0;i <= n;i ++) { if(!vis[i]) pri[++ tot] = i;//当i是素数时 for(int j = 1,m;j <= tot && (m = i * pri[j]) <= n原创 2016-01-18 20:57:19 · 1325 阅读 · 6 评论