Welcome to My Blog!

this is a website

Part1. 快速幂(写给CTR)

问题:给定 a,b,pa,b,p ,求出 abmodpa^b\mod p

对于这个问题,有一个显然的解法:将答案初始化为 11 ,我们循环 bb 次,每次都将答案乘上 aa ,并模个 pp 。显然地,此方法时间复杂度为 O(b)O(b)

Read more »

  • Splay是一种平衡树,能做到单次查询均摊复杂度为 O(logn)O(\log n)

  • 容易忘的东西: lazytaglazytag 未清零。。。 son(x,0)son(x,0) 忘记套 sz()sz() 。。。 splay()splay() 忘记更新根节点。。。 maintainmaintain 忘记。。。倒是 splaysplay 每次都记得写。。。

Read more »

首先,可以感性地发现挪馅饼时出现负值不会影响最终答案,只要最终方案是非负的就行了。

所以,我们不妨规定,一个盘子只能从右边一个盘子拿馅饼,或者向右边一个盘子放馅饼。

我们用 fi,j,kf_{i,j,k} 表示前 ii 盘放 jj 张馅饼,第 ii 盘放 kk 张馅饼的最小花费。不难发现 fi,j,kf_{i,j,k} 可以转移到 fi+1,j+p,pf_{i+1,j+p,p}

Read more »

前面两位大佬用的都是 O(n2logn)O( n^2 \log n) 的树状数组解法,所以我想提出一个$ O(n^2) $ 的解法,欢迎指出问题。

首先,冒泡排序(或是英文题面中的插入排序)需要交换的次数就是逆序对的个数。

怎么证明呢?其实很好理解。我们假设所有数都加上了 11 ,也就是原数组变成了 1...n1...n 的一个排列。当你交换 aia_iai+1a_{i+1} 时,这两个数肯定是一对逆序对。而同时这两个数又是挨在一起的,所以 1...i11...i-1 的所有数往后的逆序对不会改变, i+2...ni+2...n 往前的逆序对也不会改变,相当于就干掉了一个逆序对。所以每次交换干掉一个逆序对,也就是说逆序对的个数就是要交换的个数。

Read more »
0%