好恶心的一个专题!
首先大致总结一下求组合数的方法:
暴力(复杂度为min(m,n-m))同时乘大数以及小数的逆元,其余部分分子分母相消。
lucas:适用于模数小的时候,复杂度logpn
杨辉三角:适用于m较小n不太大的时候,而且组合数要用到很多次。
大概挨着讲一讲每道题,顺便总结经验。
排队:
上来先来一个高精组合数把你弄懵。抛下一句“注意答案可能很大”就走了
然而公式其实挺简单。想到题目里有一个额外的2,提出来单独考虑就行了。
高精运算*=加&会快一些。
感觉很像二叉树(线段树)不对么?
递归它。把数列往下搜左右两半搜,子问题是一样的,把所有数分配给左右两边。组合数干它。
父结点比左右儿子大就可以了。也就是父结点拿走最大的数,剩下的随便分配给儿子们。
取模少了一个括号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模合数。
需要考虑数字有重复,含重复元素的排列数公式咯。
源公式合并同类项,你就会得到一个很简单的式子了。
总结:
1)如果没有头绪,打表找规律也是个不错的方法。
1.5)上课手模测试点效率极低。
1.8)物理课找规律效率极高。
2)要经常考虑式子的某些项是否可以合并化简。
3)要会打暴力。因为考试时式子真的不好想。
4)多想想公式的实际含义有很大的帮助。
5)dp结合组合数很可怕,要多练习。
6)数论不一定不会结合数据结构,不要阻塞自己的思想。
还是比较有趣的一个专题哪。
来源:https://www.cnblogs.com/hzoi-DeepinC/p/11161542.html