置顶留言:主要还是在洛谷博客更新,这里备份一下我认为比较有意义的东西...

 

以为luogu出bug了,没想到是我又红名了...

P1084疫情控制第四次重构,经历了一次思路错误部分重构,后面都是在卡一些时间什么的,期间洛谷炸了一次到LOJ上交$n=50000$的点跑了1s,洛谷正常以后交就T掉了,自测发现是8s,奇怪的事情发生了,正在那里测试复杂度错误的地方,突然就跳到14s再也掉不下来,怀疑是vector写set的原因,一测果然是...而换成set时间却也降不下来,怎么算复杂度都是$O(NlogNlogC)$理论上就算是菊花图也能卡进2s,但就是跑了14s,非常崩溃,理论复杂度正确答案正确我给打了个表过掉了,从下午两点做到晚上八点[查看代码](https://www.luogu.org/paste/c7qa8ypz)

P3118USACO的状压题,其中$n=20$,就单纯开一维,就足够,dp过程不难,更重要的是预处理中离散化状态,状态的离散帮助我把复杂度优化到了$O(2^{n}n+n^2c)$[查看代码](https://www.luogu.org/paste/jhhvyhi5)

又找了一道新背包来做,P4095是一道类似用前缀和+二进制优化的多重背包,背包内会ban掉任意一个物品但只会ban掉一个有点误导,事实上还是用双向前缀和就能解决,昨天老师讲了一道数列中ban掉一个数求可得最大gcd的题目也是用到双向前缀和,复杂度$O(nm log^{c})$[查看代码](https://www.luogu.org/paste/ld96a75h)

课终于是可以听了,拓展的内容比较多,可以先听掉再找时间做题

我崩溃了,被P3084的dp按在地上锤,感觉这辈子都做不出来了,对着题面干瞪眼了两个小时

继续写状压dp,P3622动物园,环上的状压dp,与其说是练dp更多想了一些处理环的方法,想不出什么高明的方法只能把环开头的状态定死然后开始转移,复杂度$O(2^9N), n\leq 5*10^4$ ,但由于本人dp写法常数极大,所以最大的点卡了700ms,要学习一下标准小常数写法(orz,这题数组居然开小了,多年犯一次)[查看代码](https://www.luogu.org/paste/rt0lf8gm)

写掉了很久以前不会写的数列涂色P4170,对于任意$f(i,j)$由$f(i+1,j)$和$f(i,j-1)$转移来的dp都没有什么难度,而这个题目要多判一种断点的情况,是第一次接触[查看代码](https://www.luogu.org/paste/rt0lf8gm)

AC250,而且现在开始$namespace$包装常用函数,代码风格upup

P2331在矩阵内寻找k个子矩阵使分数最小,题面先前看过好多遍了从来没思路,这次看到$m \leq 2$瞬间明白这就是一水题...对于现在任意行$i$一共就五种状态,当前使用$j$个矩阵,对该行使用左侧使用右侧...不过状态之间互相转移要写非常多的语句[查看代码](https://www.luogu.org/paste/wdkm7f8u)

P3070,在平面矩阵上建图进行状压dp,挺小清新的一题,dp过程不复杂思维难度不高,但脑抽了没有写Floyd优化最短路径给我WA掉了一次[查看代码](https://www.luogu.org/paste/ix4dzoxz)

P2466类似于关路灯...完全就是关路灯,加了一点边界处理罢了,WA掉一次因为没有特判起点为1的特殊情况...[查看代码](https://www.luogu.org/paste/qgzb89ia)

原来大括号是这么打的$max\{ a_i+b_i\}$

直接上P2157学校食堂,状态压缩?压缩就压缩,方程式很好推$f[i][x][last]$表示现在$i$之前的人已经全部打完饭,$i$还未打饭,x是压缩的状态表示后$b[i]$个人是否打饭的状态,而$last$表示上个打饭的人,这样子转移就没有后效性,时间复杂度$O(Tn2^B B^2)$刚好卡过,写代码用时3小时,调代码用时4小时,是对身心的一次试炼,出现了一些溢出,枚举顺序,初始化上的问题,题解写的很优秀,我的dp代码长度是题解的4倍....[查看代码](https://www.luogu.org/paste/dz3qahs7)

请问打表是这么打的吗?(题目:三连击)[查看代码](https://www.luogu.org/paste/dfqwboos)

挑战NOIP2017宝藏状压失败,耗时两小时,晚上对着题解写一下

P1879状压第二道例题,和上一道做法相似,微调了一下[查看代码](https://www.luogu.org/paste/77clbl0z)

P2704状压第一道例题,感觉还行,因为我与或运算用的是"and" ,"or"所以我的代码还能保持在看得懂的状态,看别人的大量位运算符号真的要晕了[查看代码](https://www.luogu.org/paste/yf7pd9r5)

感觉做题有点病态?不到完全做不来就不看题解?AC了以后也不想翻题解看看别人的优秀做法

P4404证贪心来着,一共就两个关键的变量,用一组数据hack掉一个不就只剩另一个了?可翻遍全网都没有证明[查看代码](https://www.luogu.org/paste/idzxd759)

补一下之前写的水题题解[查看博客](https://heydarling.blog.luogu.org/post-ti-xie-p3147-usaco16open262144-post)

唔,P2258子矩阵原先看过题面但是感觉不太可做,本身打算实在推不出来就看题解的...结果一上手就推得很快,对于竖行我枚举全排列复杂度为$O(C_{m}^{c})$其上界为$C_{16}^{8}=12,800$然后就是数列上由$n$个物品,取个$r$个,每个物品有自身权值和与其他物品相对权值,则$f(i,l)=min(f(k,l-1)+seg(k,i))+seg(i)$ $k \subseteq [1,i-1]$,一开始区间dp做脑抽了写个$O(N^4)$发现根本不需要枚举左端点$O(n^3)$之间解决,通过递推$O(n^3)$解决所有权值,总复杂度$O(C_{m}^{c}n^3)$跑的飞快[查看代码](https://www.luogu.org/paste/k5dek1tp)

来南昌一周了,蓝题总算涨到了100题

唔,P2515本身是熟练tarjan缩点的,还有树形dp就一并写了,然后树形dp的转移出了点小问题自己没意识到,开拍的时候测试数据的示意图我给画错了,照着五个点的图就是没找到怎么输出std,没办法先把状态转移给改了一下,改一般的树形dp还是很简单的,然后再回头看那个测试数据...被蠢到了[查看代码](https://www.luogu.org/paste/k5dek1tp)

下述四道题都是没拍一遍过的

P3847总算来了一道比较有意思的dp题目,把原数列分成两段进行匹配,设计状态$f(i,j)$表示数列1i个匹配完毕,数列2j个匹配完毕无论怎么添加或删减对状态是没有影响的,那么$smax(f(i+1/0/1,j+0/1/1),f(i,j)+1)$,并且对于任意$key[i]=key[j]$的情况下$smax(f(i+1,j+1),f(i,j))$,不过对于边界的处理和枚举顺序呢非常棘手,需要一些特殊的姿势,而且当n为奇数时还要进行三次dp...然后就把这个伪方程给自己hack掉了[查看0分代码](https://www.luogu.org/paste/sdwpr8n7)
手玩了了一下换区间dp的状态设计发现这又是一水题[查看代码](https://www.luogu.org/paste/m1dmtnr2)

过了一道敲砖块的重题,日推推荐的...

P2439水题三号,类似一本通提高篇贪心第一例题,不过加了一个权值贪心不管用了,对dp来说换标不换本,不过是一道简单的线性dp,初始化排序罢了[查看代码](https://www.luogu.org/paste/a5urc9pq)

P3842水题二号,一眼就看出来了左右段由上一层的左右段转移,计算距离函数比dp方程还难写[查看代码](https://www.luogu.org/paste/hrllx4qp)

P2285也是一道复杂度很迷的题目dp,$O(M^2)$的做法很简单但是在$M<10^4$下应该会T而这题却没什么问题,翻了题解第一页全是$O(M^2)$的做法[查看代码](https://www.luogu.org/paste/fw8dq2x6)

P1640这道题目本来是想当二分图模板第三题来做的...二分图很好想,结果复杂度$O(NP),N=10^6,P=10^4$,而匈牙利算法的复杂度很难卡,并且原题只卡了dfs,我至今不知道正解是什么玩意儿....[查看代码](https://www.luogu.org/paste/0mronbe2)

下一道二分图是在棋盘上的,P1129二分图,肯定是要找一种特殊的做法的,题目要推出来一个推论就是对于i行j列的棋子不管怎么移动它始终和原i行原j列的棋子在一起,debug的时候还是有一点初始化的问题[查看代码](https://www.luogu.org/paste/kw5p2cu3)

二分图写一些类似模板之类的,总感觉会考特殊的建图姿势,P2055先做了一道较复杂图论里的二分图模板,有n个学生就思维定式为n个节点了,没想到还是可以以各种变量为节点...第一次写匈牙利同时第一次写链式前向星,有一点初始化上的问题[查看代码](https://www.luogu.org/paste/p4fxejvt)

微调了一下代码风格,work函数改写到prepare里了,打算smax开始用typeT,vector改写链式前向星

P4436 AHOI/HNOI2018,思考了很久,想了一个类似于暴力的方法(因为复杂度是$O(N^2)$,但理想复杂度是$O(NlogN)$左右),但终究因为不会写维护动态树的LCA放弃(不能$O(N)$维护吧...)写了个40分部分分做法没有调试(因为一开始思路错误就闹超了结果还能过40分)[查看代码](https://www.luogu.org/paste/fo6xbfr5)

P2558tag上有着好多类似于dp搜索之类的,实际上就是一个高精[查看代码](https://www.luogu.org/paste/twnmhmk5)

P2530轻松愉快的dp小水题,四维循环不想写补了个记忆化搜索,头铁不加记忆化70分[查看代码](https://www.luogu.org/paste/hcbvyr28)

写个背包问题P3891,背包问题的转移方程还是非常好推的,写个方程$f(nowget)=max(f(nowget),f(nowget-b[i]))$方程简单但处理细节还蛮多的,交上去瞬间记起来数组没开大RE了几个点,本来应该一遍过的[查看代码](https://www.luogu.org/paste/odz12hze)

P4381 IOI2008,虽然是黑题,但是是紫皮书的基环树最长直径例题,手码了150行的代码调试一个没有判重,一处数组名写错,
拍不出问题就提交拿了40分,再看一下突然发现结构体里的权值没有开longlong,再交95分,被卡了一个点毕竟$N=10^6$,回去看了一遍复杂度没毛病,那就上O2O3和register int 993ms卡过[查看代码](https://www.luogu.org/paste/s9f80kzb)

P4343二分答案小水题,然后因为一段二分代码中没写else疯狂WA,码力可见下降的可怕[查看代码](https://www.luogu.org/paste/o6gokeri)

点分治模板题2634,没有什么特殊的[查看代码](https://www.luogu.org/paste/z5b0799y)

18年提高D2T1正解基环树,卡在较大节点的更新上,只更新意思是错的,没注意更新的范围是错的..[查看代码](https://www.luogu.org/paste/bwkhukn4)

做17年普及组T4,裸的单调队列,$O(Nlog^{10^9})$在N为$5*10^5$下只跑了0.1s,STL飞快,debug了两次,一次是因为快读没判负数,还有一次是空队列问题,单调队列基本上只要和队列操作有关的语句都要先判是否为空再执行...

做18年普及组T3,推了个70分做法$O(n^2m^2)$就不会做了,学着题解写了个$O(nm^2)$不贴代码

P2887贪心,进阶指南例题[查看代码](https://www.luogu.org/paste/pjwdk0wq)

P3147不算难的区间dp,简单推了一下还好推出来了[查看代码](https://www.luogu.org/paste/74h7sgbp)

P3025比较简单的区间dp,递推[查看代码](https://www.luogu.org/paste/2b7ov32l)

P1296说是树形dp,实际上数据范围没给全只能贪心做,提交dp只有10分,[查看代码](https://www.luogu.org/paste/l4f9x25l)

P1080高精+贪心,高精除法得到0的特殊情况没处理WA了[查看代码](https://www.luogu.org/paste/cl2qciee)

P2219随便开了一道单调队列,单调队列还是有点捞的感觉,处理一些细节做了很久[查看代码](https://www.luogu.org/paste/hgpz8ta6)

* tip:2831状态压缩

我裂开了,调了一下午的$O(n^2 2^n)$爆搜,卡在最大的两个点翻题解别人搜索的写法都和我不一样,我寻思着都是玄学复杂度啊[查看代码](https://www.luogu.org/paste/uimasqyr)

虽说是单调队列题目,但用堆维护更加简单P2564[查看代码](https://www.luogu.org/paste/4l96z467)

单调队列解决问题P2698[查看代码](https://www.luogu.org/paste/oyfiog1f)

P1955一道简单的离散+并查集例题[查看代码](https://www.luogu.org/paste/u0bw2zh2)

P2146树链剖分模板[查看代码](https://www.luogu.org/paste/zio6v0km)

综合分析自身情况以后其实没有太过于在意算法竞赛这个东西

但是既然暑假了就再学一波