OI笔录

文章目录

    • 二月一日 并查集+堆
    • 二月2日 BM & KMP & TRIE & AUTO_AC
    • Febr,3rd——AUTO_AC
        • CF86C(AC自动机、DP)
    • 2.4 RMQ / LCA / 树链剖分 / 线段树
    • 二月五日 RMQ & LCA / 树链剖分 / 线段树
        • the K-th largest group (并查集、树状数组)
    • 2/6/2020 线段树 / 树状数组 ----- 共 & 异
        • 捉迷藏(线段树)
    • 2-7-2020 平衡树(划掉)treap
    • 元宵节AnKang 平衡树(划掉)splay
    • 庚子年二月九日 点分治 & LCT
        • 点分治模板
    • 2.11 考试总结
    • 2.12 考试总结
    • 2.14 考试总结
    • 2.15 考试总结
    • 2.16 考试总结
    • 2.17 考试总结
    • 2.18 考试总结
    • 2.20 自主学习总结
    • 2 ∅ 2 ∅ 2\empty2\empty 22/2/22 sumairy
    • 二月廿三 总结
    • Febr. 24th 总结
    • 二月初三 总结
    • 10(2)月11010(2)日 总结
    • 2.31 考试总结
    • 3.2 自主学习总结
    • 3.3 自主学习总结
    • 3.5 自主学习总结
    • 3.6 自主学习总结
    • 3.8 自主学习总结
    • 3.10 自主学习总结
    • 3.11 自主学习总结
    • 3.16 自主学习总结
    • 二分图与网络流做题记录
    • 3.27
    • 3.28
        • BZOJ3907 网格
    • 3.29
    • 3.30&3.31
    • 4.1-4.4
    • 4.5-4.6
    • 4.7
    • 4.17

二月一日 并查集+堆

看了并查集、堆和左偏树(还有树状数组?)。

一、并查集
并查集之前预习和总结了一点点,所以看起来比较顺畅。
将并查集的一些重难点标记了,做了一道扩展里面的题目(因为不知道怎么存图搜了题解,然后搞了一下午把跟着道题并查集没有什么关系的维护弄懂了。。。但是思路在那里,之后琢磨即可)

二、堆
这也是熟人了。。但是代码并不好打(口胡很爽一写代码就离谱)。写了lrj的轮廓线,然后调得差不多了,因为codevs版本跟本地描述不一样,所以改着改着炸了。

话说例题的题目是个古董题,做过两遍了吧。。就没做了:)(毫不夸张的笑容)

三、可并堆(左偏树)
理解了思路,还没写代码。好长的论文。。

二月2日 BM & KMP & TRIE & AUTO_AC

看到19点终于把“1.模板学习”看完了。。。
想吐槽一下为什么这么杂。。而且不像昨天一样有推荐学习顺序(这个有利有弊,但利大于弊)。虽然在反复横跳的情况下把上面四个东西都看完了,但是扩展KMP真的迷了。

话说有了“1.模板学习”,应该不用“2.专项突破”了,特别是Hash资料的几个优化,有点鸡肋(而且看!不!懂!),总体来说1.比2.还高效一些,因为2.里面有的1.里面基本都有,而且2.很让人摸不着头。

开始看例题了。今天肝了一道Trie树,然后抄了抄AC自动机(挺好理解但是怎么就和动态规划啊,矩阵快速幂啊,图论啊,概率啊挂上了呢???wtlkh)。
明天看能不能把AC自动机中的三个应用肝出来(概率放弃了0.O)。。。

Febr,3rd——AUTO_AC

AC自动机本身不难,但是他可以和很多奇奇怪怪的东西结合,这就很让人不爽了。但是这一类题目很容易看出算法,因为“有多个子串”是明示AC自动机。

1.动态规划。
一般问长度为n的字符串中若不能出现m个子串的情况下最少修改几个字符。设状态dp[i][j]为前i个字符到达状态j。

2.矩阵快速幂。
一般问在长度为n的字符串中不出现m个长度不超过L的子串的情况下有多少种方案。(复杂度为L^3*n)

其实动态规划的n如果变成10^18,也可以用矩阵快速幂来做。

然后,我就被踩了。那个转移我搞了很久才懂,脑子一直卡住了。
换了一个博客,发现了了不得的事,我把状态看错了。。。然后一下子就懂了。
注意:AC自动机在建的时候fail指针数组和next数组有时并不完全独立。不同的问题需要的信息不同。

CF86C(AC自动机、DP)

题意:构造一个长度为n的字符串,在总共m个子串中选择,构造的字符串中的每一个字符都需要有子串提供,求构成的方案。
AC自动机有这样一个特性,停留在深度较大的节点时候可以继续拥有当前串所有更短后缀的信息,因为可以沿着fail指针寻找其后缀。我们走fail时会使当前子串剩余0~len-1长度后缀的状态都转移到最深的点上,而转移之后我们丢失了当前状态的已经匹配的长度的信息,所以新增一维状态表示当前串还剩多少没有匹配,在这个树下面会有匹配的项。匹配上就转移到0,否则转移到未匹配+1(son是在跳fail)

2.4 RMQ / LCA / 树链剖分 / 线段树

看了如题。了解了RMQ和LCA的实现和转化;知道了逆操作的思想,如Lost cows和Buy tickets两道题。

RMQ的两种实现方法:ST树和ST表。
LCA的两种实现方法:寻找最深公共根路径节点和寻找最浅最短路径节点。
然后根据这两个性质就可以用tarjan算法将LCA问题变成RMQ问题。

今天的内容在以前的基础上更有提高,
对数据结构的认识,决不能局限于功能上,也要看到它的弊端,这才是做数据结构题及时打开和切换思路的秘诀。
(ppt上对线段树的理解实在透彻,可以好好钻研,难怪都说中国选手擅长数据结构)

二月五日 RMQ & LCA / 树链剖分 / 线段树

1.其实是重链剖分,用到了树链剖分的思想。选取最深的节点作为重链,维护DFS序使其链上节点序号连续,子树由于DFS序的性质也是连续的。然后就可以用线段树维护区间和。

2.tarjan算法的实现,就是DFS序的性质。

3.并查集和树状数组实现Kth问题。并查集维护组大小,树状数组维护组数。

4.线段树的应用,也要注意不同情况操作略微不同。

the K-th largest group (并查集、树状数组)

并查集+树状数组的妙用之在线第k大。
将C数组的下标和权值的意义分别改成表示组内键值数量,组数。
查询第k大的时候转换成第k小,然后枚举ans的二进制位,找到一个∑C[1…ans]小于k,此时ans+1这个下标就是第k大的组的组数。

2/6/2020 线段树 / 树状数组 ----- 共 & 异

线段树的应用,注意基本操作之间的差异。

1.重点:拆分与合并信息。分析怎么把当前区间的问题拆分到左右子区间,新增维护的量;分析如何合并两个区间,考虑边界与否。

2.线段树维护DP值。一般树状数组也行。

3.一般来说虽然线段树常数大,但是用来处理修改和查询的结合的题目比较直观。

4.RMQ问题只能用线段树。

树状数组的应用,注意下标与键值的意义。

1.重点:如上。

2.可以用于第k小,逆序对。

3.树状数组更容易提高维度。

捉迷藏(线段树)

括号序列也可以和路径边数联系起来。进入子树前加左括号,回溯后加右括号,相当于把子树括起来。在DFS序中,两棵子树合并时去掉匹配括号剩下的就是路径数。那么维护最远的两个点就是求最长括号序列,然后单点修改区间维护就可以用线段树了。

2-7-2020 平衡树(划掉)treap

今天很惨。。/ll
[上午]状态不错,把平衡树都看完了。然后。。。决定手打无旋treap。。
[下午]就过去了。。然后。。。决定调对无旋treap。。
[晚上]就差不多结束了。。调到十点多。突然发现自己今天只写了一道题(treap,无旋treap,可持久化treap)

不过还是有东西可以写的。
我把上午的知识点提炼都写在纸上,然后仔细的对比了一下,下午再“实战演练”。。收获挺大的。
pdf上只写了按照size来split的,但模板应该按键值(天真的我都打了一次)。
然后merge可以直接返回L或R(方便些),也可以传引用。
然后ins很简单。。
del注意只删一个,而无旋treap不支持count,所以把v都提出来,去掉一个,再合并。(并不知道是不是因为数据水,全删也行)
split。。。这个传参思维难度有、大,特别是传引用,但是经过一下午的画图终于弄懂了(splay最懵逼/ll)。
rank和kth,注意边界,要知道split将等于v的分给L还是R。
pre和sur,同上!啊,没了
不对,还有reverse,这个就推标记。实现把左右儿子换一下就行。
pd在所有要改变树形态的操作前;pu在之后。

splay好像和蔼一些(除了背板子)。

今天大概就这个亚子了,睡觉。。

元宵节AnKang 平衡树(划掉)splay

本来打算看树链剖分和LCT的。然后被DFS例题的可持久化搞蒙了。

于是我又。。调了一天splay。

不过总算把门道都搞清楚了。

  1. splay有两种写法(怎么怪怪的= =?)
    1. 一种是(x,y),将x移到y的下方。
    2. 一种是移到root,然后设置为root。(这就是上面的特殊情况而已,不过这样可以保证树高和方便前缀后缀查询)
  2. rotate。今天都打得我打着打着打错了了。就很常规操作更新关系就好了。
  3. ins & del。这个就可以count了。记得ins后要splay。
  4. pre & sur。while到底。
  5. reverse。 转到左子树的右子树,打标记。

没了。

自从进了平衡树,什么代码都按kb算。。

抛开奇怪的毒瘤题不谈,个人觉得树链剖分是思路最清晰的。重链剖分是两次过的。

庚子年二月九日 点分治 & LCT

淀粉质和树链剖分都好善良/ll

(我没保存电脑关机了[裂开]。。我的markdown没了。。)

算了,重写。。

LCT -Link Cut Tree - 动态树

久闻其名。果然是个难肝的数据结构,最基本的操作:access。其实也好理解【只是理解】(一定要多画图),四步操作循环到根即可。

需要注意的是pushdown,即关于reverse的处理。一般需要将儿子也转一下。

点分治和树链剖分都比较手生,需要再暴力手打几遍。。

然后树分治和LCT应该重新再学一下,好像还没有什么手感。

点分治模板

淀粉质好东西!主要流程:
1.找重心,比较经典的两个数组是size和count,记录子树大小和整棵树大小,然后根据其最大子树和剩余部分最大值的最小值来确定重心。
2.递归统计答案。这里用到的思想是容斥原理。将经过根的加上,再枚举儿子减去重复部分。
3.计算函数。DFS序将子树遍历,求出所需要的数据。注意清零。

2.11 考试总结

还是犯了老错误,没有安排好时间,不会取舍。

本来想试试自己码力,结果忘了using namespace std;,死活急不出来。。只好手打了个个堆,耗了一个多小时。

Hash本来map很快写完了,但是不甘心拿30分,就一直死磕这个Hash。。但事实证明没写过没有总结过,完全不知道自己错哪里。

就这样,今天两三个小时就耗在了一些不必要的错误上面。

唉,老毛病改改吧。

2.12 考试总结

本来今天心情不错的,然后第一题。

(读题ing)??(自动理解)这有点像某道买进卖出的题,堆?还要在树上??

这怎么分治???LCA???不可能啊【完全忘记看完题目】

然后第一题卡了。

第二题。每次向后面追加一个字符。。。(随便加那个?)哦!统计点数奇偶然后&¥%#*@……【完全不知道看错题目】

第三题。模板!(……)写完了。哈哈!

心不静下来,怎么做题!

然而,第一题其实很简单(看懂之后)。

第二题其实不简单(看清楚之后)。

奇怪。。

越来越不在状态了,还是停下来做做常规调整一下吧。

P.S:我怎么感觉好多知识点都是套路。。

2.14 考试总结

今天状态不错,但是做题的时候还是有一点急躁。

就拿第二题来说。明明是最先想到正解的题目,却一直到最后又是因为一个自认为绝对没有错的错误给K.O了。上次也是,急忙之中打了一个STL堆,结果连>=都没有想清楚。

第一题一开始以为只能莫队,而且是我不会的带修莫队做,所以就跳过了。

但是后面又回来看第一题。终于被T<=30的数据范围点醒了其实还是玄学记忆突现

然后在lsq的帮助下过了#4。(这也提醒了我只要出题人故意不小心没讲的,都要特判一下)

虽然垫底了……¥%@#¥|&

不过我觉得自己状态好多了,因为思路很清晰,基本上代码只需要写一遍改一点手误就能运行了,虽然今天早上差点睡过头

PS:我终于找到导出了。。

2.15 考试总结

IOI杀我。

第一题原题还是打了好久,线段树根本不会调。眼睛看花……

不过最后还是弄出来了。

T2一开始想到了维护方法,但是一看数据范围就傻了。离散化根本就不熟,只好想用线段树写暴力,发现这题线段树暴力复杂度跟正解差不多,最后直接一个优美纯暴力过了52pts,终于拿到了大众分。

T3其实我一下子就有了思路,想到了LCA,最后用并查集实现但是没时间了。最后提交都没按到。

策略问题策略问题。(思维题多好拒绝套路题讨厌硬核数据结构题

2.16 考试总结

IOI \text{IOI} IOI杀我 × 2 \times2 ×2

点分治细节很多,码量很大,对于手残党很不友好,而且三道题的侧重点不同,让我想了很久才下手。

明明觉得是对的但是改不出来,点分治就是一个贼玄学的东西。

特别是T2,感觉答案不会大于n所以写的 > n >n >n,死活 10 p t s 10pts 10pts,改成 = = n + 1 ==n+1 ==n+1就有 60 p t s 60pts 60pts了。然后剩下的40pts没辙了

T4瞄了一眼,看到夸张的一堆0就跳了。

又发现lsq数形转换的妖孽思维了。

2.17 考试总结

T1 adera

根本没想过的,以为会被卡,懵逼习以为常地以为又要调好久好久,结果去个重就过了人间值得

然后莫名其妙就Rank2了……(trie是不是只要差不多 O ( ∣ E ∣ + ∣ S ∣ ) O(|E|+|S|) O(E+S)的复杂度什么都能过)

T2 circle

emmm,骗分的程序拿了满分……不好说什么了。

但是正解比骗分麻烦多了,是个扫描线算法。

T3 date

发现Imakf作为CF&AT老手的扩散思维了。

二分答案是个难想到的东西,我有次打AtCoder也是突然想到二分答案就做出来了。

然后剩下的就是硬核的东西了——码力。

2.18 考试总结

最近图论题目做的比较少所以思考问题的时候比较生疏。

但是板子打的还是挺快的……

T2这种题目的贪心(看不出来= =)确实比较玄,万一是很赚,万一不是就浪费时间了。【IOI赛制打了再说,但是OI不应该冒险】

T3的二进制分组没想到有点可惜。因为自己调题的思路错了方向,在想维护边的重复经过,但是真正需要考虑的只有根相连的边维护。

T4这样的题目充分说明图论模式急需重启了。

2.20 自主学习总结

XX就像一把大锤子,你小的时候拿不动,长大了就自然可以挥得动了。——ysuperman

其实以前看起来很厉害的东西,慢慢的也不那么可怕了。

我觉得每种题型做一两道题目就可以了,一时练习很多,也会忘掉很多。主要先理解。

之前经常是踩着题量要求过,是因为觉得自己刚接触这个东西还不熟,就会去网上找各种Blog看,于是耽误了做题。这两天试了试先做题,然后简要的进行总结,发现这也是一种学习的方式,就像DFS和BFS,最后总会遍历完一整张图。

LCT还是不会。

经常因为想正确并且简单的解而浪费时间,有时我做几何证明题也会这样,先想到一种顺着逻辑但是要写很多字的方法,然后开始优化过程,虽然失去了很多时间,也会有收获。

我可能和王逾昔差不多,只要哪一天终于掌握了某个东西,做什么变式都会,在这之前会显得很“笨”。

2 ∅ 2 ∅ 2\empty2\empty 22/2/22 sumairy

图的概念很多而且很全面,这意味着出题的时候一定会有一个对应的概念,那么这就考验对知识点的掌握情况了。

tarjan和gb算法都是建立在DFS序上的,所以对应的可以生成一个DFS树,还会有四种边——树边,前向边,返祖边,横叉边。 这样的话,一个看起来真·不知道从何入手的图就根据dfs序转化成了一个有根树,而且这些边的性质都很有用。gb算法就是换了个存状态的方式……

kosaraju则利用的是强连通分量的独特性质:顺逆皆可到达分量内任意一点,所以用图和反图来设计算法,这样来看,kosaraju的局限性大得多。暂时不知道有什么独特的性质、、、而且浪费时空

割点和桥的tarjan求法比较易懂。然而……~~那个ppt错误也太不走心了吧!!(墙裂谴责)~~点复杂一些。俩都是利用tarjan的DFS序上的一些性质去判断。

P.S.:前天不知道为什么不知觉地看到今天的内容了(逐渐偏离主题)

二月廿三 总结

二分图裸题还是好理解,一变我就懵了,主要是设立状态之后不能把握住怎么操作。

一个咕咕咕了几天的变式,大概是要求最大匹配的方案数,虽然知道求强连通分量,但是扯不太清楚这个流程。

相对来说前几天刚学的最短路的概念慢慢沉淀下来,做这些题目就熟些。

每天自学有、肝不动了。大概能搞懂KM是极限了。

Febr. 24th 总结

终于把最小点覆盖中关于匈牙利的应用琢磨懂了。一般来说左边的点是匹配集(主动),右边的点是待选集(被动)。所有的交替路(增广路)都是一条匹配和一条未匹配交替连接。根据最大匹配来设计最小覆盖是可以的。

我好蠢!T^T!

然后,我一直把2-SAT和二分图匹配搞混了。今天做了一道昨天没有做完的题目。这题虽然是一道裸题,但是实现方法有方法多种,弄了一晚上,不知道哪里错了。Tarjan判强连通的几个句子不同的写法是否满足所有题型还需要进一步探究。

二月初三 总结

不知不觉就做到了2-SAT去了。理了好久才想明白,今天又特别困,想着想着就打瞌睡。

每次一些很多个函数的代码的时候就很急,感觉又是那种让人不安的情绪。一不小心错误就很多。有点不爽。

这两天七七八八地看,除了km从可行顶标开始懵以外其他的算法差不多懂了(虽然这两天做题乱七八糟的)。这部分思维上最难的就是建图,其他的都是套路。

10(2)月11010(2)日 总结

貌似理解了KM算法。仅仅比匈牙利多了几行。证明不重要,重要的是对性质的应用。要将题目中信息之间的关联和这些图的性质关联起来。

然后对照着思路看代码,对比了一道题目才知道有一句我不理解的代码是多余的……

这种题目码力不大,图的重要性在于它的逻辑关系上。二分图与强连通分量,匈牙利算法与匈牙利树,二分图的点边覆盖等等。可以说,建完图就做完一半了。

而二分图的最大匹配和最大权最大匹配基本上都可以转化为最大流和费用流。并且效率差不多。所以这是网络流前言?

2.31 考试总结

兴(zao) 致(shou) 勃(da) 勃(ji)。

打开看到第一题。看了很久终于理清了题目意思。然后想到了贪心乱搞——因为任意起点,所以路径一定是某一个环。枚举每一个环即可。然后开心30pts

想出了T1暴力之后继续划水。T2也很快有了思路。T3瞄了一眼以为是DAGDP,然后看了样例发现无向边懵了,然后想直接先搞出最短路然后收束。T4。。。花样太多没想。

后来专心肝T2,最后的状压DP那里懵了好久(内心:这好像是floyd(错误示范)),然后傻子一样打了一个floyd,后来才发现要用状压DP,然后忐忑地打了一个状压,不料竟然过了样例。然后满心欢喜的提交。。TLE

时间所剩无几,但是急急忙忙地敲了个结构体手打堆。然后又过了样例??,于是我又祈祷着交了上去。然后我一遍AC了?!(兴奋)

然而T1是0/1分数规划裸题。()T4是斯坦纳树。()见识太浅。

3.2 自主学习总结

反正就是瞎看各种资料,浏览MiNa网站。然后差不多把FF、EK、Dinic、ISAP代码搞完了,感觉有二分图为铺垫好理解多了。

看了上下界流和一些其他的变式,循环还不是很理解。

只随便翻了一两道题目,还没有开始做题。

不过可能不是单纯的建图难,而是恶心人的方案和方案数。总让人有一种必须要用很暴力的方式而不愿意轻易动键盘。(虽然这些算法复杂度都挺大。。。)

一天好快啊。

3.3 自主学习总结

好了我开始吐了。

想从几个题入手找规律,结果越想越迷,就像拿着几张意义不明的照片要找共同点,不知道该怎么分析。

接下来均为不明目的的资料整理

题目 多源汇 边/边权/边流
飞行员配对 最大匹配 T 匹配 边流。可匹配的英外连边为1。
负载平衡 最小费用 T 供求 边权即转移邻库费用。容量为存量-平均值。
观光之旅 欧拉判定 T 供求 入度与出度为容量,与上题类似,一边为供求点,一边为需求点
骑士共存 最大独立 T 互斥 对这种题目一句话。互斥关系建图比合法关系建图简单,那么用最小割,否则用最大流。
方格取数 最大独立 T 互斥 两个方法思路不同,复杂度也不同,但结果是一样的。给互斥点全部丧心病狂连边,只要S-T通了就不合法,所以求最小割。

接下来一部分为大量无意义随手笔记

点即目标量基于的对象。

边权inf的意义有:阻止最小割的互斥点在同一个集合,保证最大流的有效转移/可重复经过,两个本质上是一致的。

边权1或者点权最为普遍,一般边容量意义跟求的量有关。

多源多汇则建立超源超汇。

啊啊啊啊啊啊啊啊啊啊我终于懂了我终于懂了我终于懂了我终于懂了我终于懂了我终于懂了我终于懂了我终于懂了我终于懂了我终于懂了爽啦!!

可以说~~(?)~~,网络流应用广泛,在于点之间关系(边的意义?)的不同,要讲道理嘛,找规律。(不管是不是这样反正我先这么想着)

3.5 自主学习总结

看PPT吧,dalao讲题我看着看着看不懂了,字少值千金,还不配图。。

然后做题。还是在最大流和最小割的那几个应用上,然后也新学到了一个题型——(然鹅并不知道该怎么命名),敲完了代码不知道错在哪里,T到怀疑人生。。

可能将知识点和知识点拼接起来写出比较长的代码的能力还比较弱吧。

3.6 自主学习总结

今天也是看不懂闵梓轩dalao课件的一天。。。我太菜了

其他两位的课件还好。

方案想的我要炸了。可能不是完全了解网络流里面的变量的更改吧。

出题。。。(这事我全给忘了)我估摸着出一个时间分层图+最大流+并查集(+费用流)的题目其实是原题

3.8 自主学习总结

放弃闵梓轩的最后几页——看起来是个明智的选择。= =

然后开始看ABS的习题,一打开吓得虎躯一震,本以为可以搞完了,结果又有多一半东西。好开心啊:)

做了几道费用流,然后把之前出的题目删掉了,换了一道简单的费用流。

晚上吃完饭给故班主任们发节日快乐。。

总的来说,状态好些了~~(因为放弃了MZXdalao的ppt吧)~~。

3.10 自主学习总结

(想问计划是写什么)

题目可能写不完,但思路在就好。

可能有些地方跳入了思维陷阱没有走出来,再一看发现自己有些地方不对。就跟找到bug一样神奇。

现在再看之前不懂的地方,又变得顺了许多。

浪费了很多时间,但我一定会找到方法。

变得更强大,需要理由吗?

3.11 自主学习总结

最近的题目点的关系都变成了偏序(可以说就是图模型吧),但是很多时候又用到了之前的算法,所以感觉这个分类有点难搞。。。看来还是不够严谨。有时候又犯一些小错误,很常见的套路理解错了。

今天出了一天门。就带了一本生物。。然后,常规要补的东西有点多,按照相关规定,这几天就先停一下记录和总结,周六之前会把题目发过去(来?)。

【毕竟抢不到饭碗还是要面对人生的呜呜】

啊啊啊啊啊啊啊我要开学

3.16 自主学习总结

干啥啥不会,没人能比废

行吧,我怎么就这么幸运第一个做了一个假题(《小行星》——王一川)呢???

当我凭借着肌肉记忆打完dinic的代码调完bug然后测样例,突然发现不对,这题不是最小点覆盖,于是又想了想路径的意义,然后发现此题不可做*(一种植物)

于是,我去网上找到了洛谷原题——P2711小行星,发现确实是一道假题,于是,我把题解交了一下,过了。。。(?大二耍我们呢?)

我心态很好我没有爆炸今天就搞了这道题目了,算是复习了肌肉和进一步理解了路径吧。

二分图与网络流做题记录

3.27

今天只写了排列组合四个公式,然后看lrj的书复习了几个基础的知识点和数列。
晚上做了一个题目《大胖的超级数0》。很容易想到超级数B保证 B k ∣ N B^k|N BkN,但是怎么判断恰好?看了题解之后恍然大悟:恰好被 B k B^k Bk整除就是不能被 B k + 1 B^{k+1} Bk+1整除。这让我想起了很久以前一道数论题,也是把一个满足线性比例的答案变成一段减去另一段,类似于树状数组的方式。我称之为数列思想,源自 a n = S n + 1 − S n a_n=S_{n+1}-S_n an=Sn+1Sn

3.28

BZOJ3907 网格

注意组合的几何意义,有时候把一些限制在图上表现出来会直观清晰。比如奇怪的路径这题,限制相当于向右走的次数时刻大于等于向左走的次数,即不能越过一条45°的斜线。方案数就很明显了,容斥的话,一个是向上直接挂掉,一个是开始没挂后面挂了,因为45°可对称,所以转过去跟向上的方案数是一样的。
OI笔录_第1张图片
注意子问题的独立性,二维错排是可以独立运算的,横向的顺序跟纵向没有关系,因此可以乘法原理。还可以以此类推~但是!N太大,hold不住O(N)的算法怎么办?然而错排也没有其他很好的算法,这时候,我们从模数入手——为什么出题人把模数设置得那么小?肯定有瓜,于是推理打表可得m是个循环节,复杂度降为O(M)。

3.29

硬是做了一堆题目。大多是gcd,exgcd和组合数。有些题目确实是打表找规律出来的。
所以说,做数学题的时候一定不要吝啬自己的代码。
常规作业还没有写完~溜了溜了

3.30&3.31

这两天常规作业实在是太多了,根本没有时间写题。。结果又总是在写常规的时候惦记那几个还没有写完的题目和没有看的课件,搞得我效率很低。

4.1-4.4

一起写是因为这几天一直在搞常规,昨天晚上毅然决然放弃了常规作业直到今天才把组合八题写完了。关于一些简单的思路已经写在隔壁blog里面了。还有很多知识没开始看……但是眼睛看灰好疲劳了,所以今天要早睡!明天六点半一定要起来读书。
显示屏再见

4.5-4.6

一晃两天过去了。后面题目真的很让人抓狂,喷一波题面描述= =
跳来跳去,写了四道题。。还是没有完成任务T^T。还有因为硬核问题没有写的题目(mobius)。
解方程这题一开始想直接化掉加减运算但是无果,然后才注意到“配方”,变成了喜闻乐见的 a b = k 2 ab=k^2 ab=k2的形式。于是转换成了求 ( n ! ) 2 (n!)^2 (n!)2的质因子个数。
互质首先很容易简化题意,1-n!中与m!互质的整数个数。然后要想到辗转相除法的性质——gcd(n,m)=gcd(m,n%m)那么每m个循环里面互质个数是相等的。
最长倍开始只想到最长序列。想的是选择更小的。而考虑方案,最长的一定是把所有的因子逐个乘起来,只是乘的前后顺序不一样,那么就是可重集组合数问题
最简分数纯属没看懂题目。最简真分数就是互质,不大于n满足加法原理就是逐个求和。但是欧拉函数递推不知道也是硬伤……

做一个题,要有一个题的收获。

4.7

因为今天听到后天就要去学校所以打算这两天先把网上的东西都整理完所以把可爱迷人的数论放一边了(落泪)(超想继续学数论啊)
今天xiaolilsq提出一个问题:证明 n = Σ d ∣ n ϕ ( d ) n=\Sigma_{d|n}\phi(d) n=Σdnϕ(d)。虽然可以感性的理解但是需要更加有力的证明————
想到昨天那棵奇奇怪怪的树!或者说,互质跟最简真分数本来就有密切的联系。
1 n , 2 n , 3 n , . . . , n n \frac{1}{n},\frac{2}{n},\frac{3}{n},...,\frac{n}{n} n1,n2,n3,...,nn
如上,gcd相等的数约分,同时除以d(一定有d|n),就变成了 ϕ ( d ) \phi(d) ϕ(d)个最简真分数。所以所有约数的欧拉函数之和就是n了。

4.17

仿佛4.7还在昨天一样~
月考杀我!又是被妇科杀的一天。物理错了原题wtm 不过3+物还好
最近好魔幻啊,感觉有很多动力了,放下了很多事情了,但是不知道要往哪个方向走。
列计划又总是感觉完不成的亚子。但是还是先给自己定个方向吧。

  • 数据结构:平衡树、可持久化线段树、可持久化平衡树、块状链表、动态树、树链剖分、可并堆

  • 图论:网络流、费用流、二分图(带权)匹配、强(双)连通分量、树的点(边)分治

  • 数学:莫比乌斯反演、Polya、FFT、FWT、高斯消元法、矩阵乘法、母函数、欧拉函数、SG函数、中国剩余定理、组合数学的一些经典类型、期望与概率、BSGS

  • 动态规划:单调性优化、斜率优化、四边形不等式、状态压缩

  • 字符串:hash、KMP(扩展)、manacher、trie、AC自动机、后缀数组、后缀自动机

  • 其他:线段树的合并、莫队算法、CDQ分治、整体二分法、最小乘积、虚树、拟阵

  • 转移矩阵构造

  • 考试题LCT

  • 考试题点分治

  • 单调队列P1973NOI嘉年华

  • 线性基(高斯消元)

  • 莫比乌斯反演

  • 中国剩余定理 - 线性同余方程

  • 拔山盖世BSGS - 指数同余方程

  • 一些积性函数

任务 完成情况
4.18-4.25 单调队列、LCT、点分治、数学知识

你可能感兴趣的:(程序人生)