初赛复习 //附复习资料
数组排序
1
//任意交换!!
//抄黄学长原话1 求最小交换次数怎么做 2 你求出每个数最终的位置 3 比如说第一个数,最终它要在第三个 4 第三个数,最终要在第六个 5 第六个数最终在第一个 6 这样形成了一个一个环 7 若干个环 8 每个环需要至少交换(环的大小-1)次 9 就是1 3 6这三个东西互相交换,就能局部有序 10 然后我们找出若干个互不影响的环 11 12 就是说这个环可以跳过中间的元素? 13 14 这个环的元素互相交换,就能各自到达最终的目的
huffman
1
//某个编码不可以是另外一个的前缀 ----B
2
图论
1
//一条边两个度
//度肯定是偶数
//而且不超过n-12
//总度32
//现有度24//还至少要4个3
4
排列组合
1
/*
方案一:一共是780个假定abc为一个单位共有1个abc,
2个a,4个b和1个c一共8个单位进行含有相同元素的全排列共有8!/1!/2!/4!/1!=840种方法
方案二:含有相同元素的全排列算法
总元素个数的阶乘依次除以每种元素相同元素的阶乘比如这里的共有1个abc,2个a,4个b和1个c一共8个单位进行含有相同元素的全排列总元素个数的阶乘8!依次除以每种元素相同元素的阶乘abc:1!,a:2!,b:4!,c:1!结果就是8! /1! /2! /4! /1!=840其中仍然有重复的就是出现了两个abc的情况
共有2个abc,1个a和3个b一共6个单位进行含有相同元素的全排列共有6!/2!/1!/3!=60种方法840-60=780*/
2
/*
A(7,7)先全排列,之后只需除以【A(3,3)*A(2,2)】即可因为A(7,7)已将所有字母按顺序排列完全,重复的必然是【A(3,3)*A(2,2)】
正解420*/
3
/*
方案一:
当n=5时,总共有5*4*3*2*1=120种可能的放法
有5本(等同于4本)放回原来的位置上,有1种可能
有且只有3本放回原来的位置上,有:C5(3)=10种可能
有且只有2本放回原来的位置上,有:C5(2)*2=20种可能
有且只有1本放回原来的位置上,有:C5(1)*9=45种可能
当n=5时满足以上条件的放法共有120-(1+10+20+45)=44种
方案二:
n个不同元素的错排问题:
如:1,2,3,.,n 的错排问题,i不在第i个位置的排列方法.
分析:
设f(n)为n个不同元素的错排方案.
第一部分:n先不动,把另外的n-1个数错排,方案是:f(n-1),然后n和另外的n-1个每一个交换,共有(n-1)*f(n-1)种方案.
第二部分:n和其他的n-1个之一交换,其余的n-2个错排,共有
(n-1)*f(n-2)种方案.
由加法原理:
f(n)=(n-1)*(f(n-1)+f(n-2))
f(1)=0;f(2)=1;
*/
3
4
5
6
注意除以A(3,3),要排除三个盒子的排列问题
杂烩
1
/*
26=64,27=128
而5个数的全排列5!=120
比较一次就可减少一半,类似二分
所以需要7次
*/
2
寻找假币至少需要log3n次
Nim游戏
1
/*
只要xor后不为0就可以获胜
3,5,7,19,50化为二进制是:
000011
000101
000111
010011
110010
可见,只有最高位的1是奇数个,其他位上都是偶数个。
所以只需要将最高位的1取走即可必胜。
二进制的100000就是10进制的32,所以要将50个石子的那堆取32个,取掉就变成偶数个数目。于是先取者必胜。以后无论对方怎么取,始终保证每一位上的1的个数是偶数即可(一种简单的方法是,他在一堆中取几个,你在另一堆中也取几个就可以)
*/
2
//有n根火柴每人可取1到m根
//若n % ( m + 1 ) == 0则先取必败,否则必胜3
抽屉原理
1
复习资料
万一我爆炸了,这些整理来的资料就留给你们吧,加油!!!
https://files.cnblogs.com/files/radiumlrb/%E5%88%9D%E8%B5%9B.rar