zoukankan      html  css  js  c++  java
  • [专题总结]组合数学

    好恶心的一个专题!

    首先大致总结一下求组合数的方法:

    暴力(复杂度为min(m,n-m))同时乘大数以及小数的逆元,其余部分分子分母相消。

    lucas:适用于模数小的时候,复杂度logpn

    杨辉三角:适用于m较小n不太大的时候,而且组合数要用到很多次。

    大概挨着讲一讲每道题,顺便总结经验。 

    排队

    上来先来一个高精组合数把你弄懵。抛下一句“注意答案可能很大”就走了

    然而公式其实挺简单。想到题目里有一个额外的2,提出来单独考虑就行了。

    高精运算*=加&会快一些。

    Perm 排列计数

    感觉很像二叉树(线段树)不对么?

    递归它。把数列往下搜左右两半搜,子问题是一样的,把所有数分配给左右两边。组合数干它。

    父结点比左右儿子大就可以了。也就是父结点拿走最大的数,剩下的随便分配给儿子们。

    取模少了一个括号91分调半天。。

    注意本题与地精部落的联系。可惜我没联系上,浪费了很多时间。

    集合计数:

    不简单。

    题目及题解>>tap here

    DZY Loves Maths II:

    他每次出场都能招致许多麻烦!

    题目及题解>>tap here

    虔诚的墓主人:

    tdcp(数论里的数据结构狂模)告诉我要打线段树我还不信。。。我错了

    但是暴力可以AC的啊。。。

    题目及题解>>tap here

    地精部落:

    milkfun mikufun提醒我之后我才发现它与第二题的联系。

    但是思考的过程值得纪念。

    题目及题解>>tap here

    看电影(movie):

    打表找规律的又一个经典题目。我太弱啊啊啊没办法哪。

    手动打表4节课,思考规律8分钟。(完了,文化课走神暴露了)

    题目及题解>>tap here

    曹冲养猪

    CRT模板题,不讲。(在礼物那道题的题解里略提了一下)

    Strange Way to Express Integers

    Emm......ex_CRT模板题,感觉很少会用到,也不讲。

    礼物:

    差不多是ex_Lucas的模板,很重要,细讲了一波。

    题目及题解>>tap here

    古代猪文

    接触到的第一个CRT非模板实际应用,这个思想挺重要。

    题目还是挺简单的,运用费马小定理对指数取下模就可以。

    指数是组合数,但模数是个合数,但并不用ex_Lucas。

    那个合数可以唯一分解为4个素数,每个都只出现一次。

    在模这四个素数的前提下求出模数,用CRT还原出来就可以了。

    Per

    依次锁定每一个数,其后面所有数字的排序数即为累加的答案。

    ex_Lucas模合数。

    需要考虑数字有重复,含重复元素的排列数公式咯。

    源公式合并同类项,你就会得到一个很简单的式子了。

    不要忘了组合数专题考试反思(19/7/7)

    总结:

    1)如果没有头绪,打表找规律也是个不错的方法。

    1.5)上课手模测试点效率极低。

    1.8)物理课找规律效率极高。

    2)要经常考虑式子的某些项是否可以合并化简。

    3)要会打暴力。因为考试时式子真的不好想。

    4)多想想公式的实际含义有很大的帮助。

    5)dp结合组合数很可怕,要多练习。

    6)数论不一定不会结合数据结构,不要阻塞自己的思想。

    还是比较有趣的一个专题哪。

  • 相关阅读:
    oracle 游标的使用
    mvc的表单发送ajax请求,太强大了!!!!
    报表页面的异步加载
    一道关于集合分组并进行笛卡尔积的题目思路
    EF常用操作截图
    大数乘法取模运算(二进制)
    求sqrt()底层效率问题(二分/牛顿迭代)
    CodeForces 282C(位运算)
    Codeforces Round #371 (Div. 2)(setunique)
    Codeforces Round #370 (Div. 2)(简单逻辑,比较水)
  • 原文地址:https://www.cnblogs.com/hzoi-DeepinC/p/11161542.html
Copyright © 2011-2022 走看看