
算法总结
二硫碘化钾kk
这个作者很懒,什么都没留下…
展开
-
快速幂与矩阵快速幂
昨天做题碰到了俩快速幂的题,还有一个是矩阵快速幂,所以今天首先总结一下快速幂。快速幂如果当前的指数是偶数,我们把指数拆成两半,得到两个相同的数,然后把这两个相同的数相乘,可以得到原来的数;如果当前的指数是奇数,我们把指数拆成两半,得到两个相同的数,此时还剩余一个底数,把这两个相同的数和剩余的底数这三个数相乘,可以得到原来的数。求解x^n的值int QuickPow(int x,int n...原创 2019-07-26 17:29:39 · 200 阅读 · 0 评论 -
均分纸牌问题
线性均分纸牌题目描述有 n堆纸牌,编号分别为 1,2,…, n。每堆上有若干张,但纸牌总数必为 n 的倍数。可以在任一堆上取若于张纸牌,然后移动。移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 n 的堆上取的纸牌,只能移到编号为 n-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。例如 ...原创 2019-07-27 10:17:20 · 1806 阅读 · 0 评论 -
基本算法模板
一、快速排序算法模板void quick_sort(int q[], int l, int r){ if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ; while (q[i] < x);...转载 2019-08-08 08:56:23 · 167 阅读 · 0 评论 -
归并排序与逆序对
归并排序题目描述给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000000样例输入样例:53 1 2 4 5输出样例:1 ...原创 2019-08-09 09:45:12 · 165 阅读 · 0 评论 -
博弈论(花里胡哨取石子)
一、巴什博弈(Bash Game)只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,1那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:每个回合时m+1个,如果n=(m+1)*r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者...原创 2019-08-20 11:10:01 · 2983 阅读 · 2 评论 -
基本数据结构模板
单链表// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx;// 初始化void init(){ head = -1; idx = 0;}// 在链表头插入一个数avoid insert(int a){ e[idx] = a, ne[idx] = ...转载 2019-08-13 08:57:13 · 328 阅读 · 0 评论