Solution - P3214 [HNOI2011] 卡农
Posted on
Edited on
Solution - P3978 [TJOI2015]概率论
Posted on
Edited on
参考 rqy 的题解(第一篇):
设 fn 表示 n 个节点的树的形态数, gn 表示 n 个节点的所有树的叶子总数。
首先看 f :
Note - 快速幂和矩阵乘法
Posted on
Edited on
Note - Splay
Posted on
Edited on
-
Splay是一种平衡树,能做到单次查询均摊复杂度为 O(logn) 。
-
容易忘的东西: lazytag 未清零。。。 son(x,0) 忘记套 sz() 。。。 splay() 忘记更新根节点。。。 maintain 忘记。。。倒是 splay 每次都记得写。。。
Note - STL
Posted on
Edited on
Note - 一些东西
Posted on
Edited on
Solution - CF1675G Sorting Pancakes
Posted on
Edited on
首先,可以感性地发现挪馅饼时出现负值不会影响最终答案,只要最终方案是非负的就行了。
所以,我们不妨规定,一个盘子只能从右边一个盘子拿馅饼,或者向右边一个盘子放馅饼。
我们用 fi,j,k 表示前 i 盘放 j 张馅饼,第 i 盘放 k 张馅饼的最小花费。不难发现 fi,j,k 可以转移到 fi+1,j+p,p 。
Solution - P8251 [NOI Online 2022 提高组] 丹钓战
Posted on
Edited on
P8251 [NOI Online 2022 提高组] 丹钓战
题意十分明白(这次NOI Online题意给得实在是太舒服了),不再赘述。
其实一开始我以为要利用 ai=aj 来做文章,后面发现好像并不需要。
Solution - CF362C Insertion Sort
Posted on
Edited on
前面两位大佬用的都是 O(n2logn) 的树状数组解法,所以我想提出一个$ O(n^2) $ 的解法,欢迎指出问题。
首先,冒泡排序(或是英文题面中的插入排序)需要交换的次数就是逆序对的个数。
怎么证明呢?其实很好理解。我们假设所有数都加上了 1 ,也就是原数组变成了 1...n 的一个排列。当你交换 ai 和 ai+1 时,这两个数肯定是一对逆序对。而同时这两个数又是挨在一起的,所以 1...i−1 的所有数往后的逆序对不会改变, i+2...n 往前的逆序对也不会改变,相当于就干掉了一个逆序对。所以每次交换干掉一个逆序对,也就是说逆序对的个数就是要交换的个数。