• 初赛复习 //附复习资料


    数组排序

    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-1

    2

    //总度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

    复习资料

     万一我爆炸了,这些整理来的资料就留给你们吧,加油!!!

    http://files.cnblogs.com/files/radiumlrb/%E5%88%9D%E8%B5%9B.rar

     

    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 相关阅读:
    ubutun Sogou输入法安装
    git的使用
    比较字符串(包含以及变位词)
    python 与时间有关的操作
    PyBrain库的example之NFQ流程图分析
    python之面向对象(继承)
    C/C++中一些不太注意到的小知识点--[锦集]
    python 有关引用的一些问题
    CMake尝鲜
    vim初探
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/5976654.html
Copyright © 2020-2023  润新知