数学
比较害怕数学题, 因为数学题一般代码比较短, 一旦想到正解往往就能AC, 但是我数学水平很洼, 知道的东西也比较少. 感觉写写暴力拿部分分比较现实. 毕竟不是每个人都能找到正解.
1. 组合数
- 一般用阶乘计算, 需要求逆元. 可以用lucas定理优化时间复杂度.
- 组合类的问题就要考虑组合数
- 1. BestCoder-Round#33 第二题是组合数的题目
- 2. BZOJ-1005-明明的烦恼 用组合数阶乘公式推导出最后的式子
- 3. BZOJ-1951-古代猪文-SDOI2010-费马小定理+欧拉函数+lucas定理+中国剩余定理 除了组合数还用到了一堆定理
- 4. BZOJ-3505-数三角形-CQOI2014 方格上的整点组合,
正难则反易
2. 欧拉函数
- 即 < n 和 n 互质的数的个数
- 当 n 为质数的时候 φ(n)=n-1
- 有一个定理在求逆元的时候很有用: a^φ(p)≡1(mod p) 当 p 为质数时a的逆元就是 a^(p-2) mod p.
- 1. BZOJ-2705-Longge的游戏-SDOI2012-欧拉函数 数学变形是关键
- 2. BZOJ-1951-古代猪文-SDOI2010-费马小定理+欧拉函数+lucas定理+中国剩余定理 逆元的应用
- 3. BZOJ-2190-仪仗队-SDOI2008-欧拉函数 往往先从gcd=1入手发现是欧拉函数
3. 离散对数(BSGS算法)
- a^n mod p = b 求 n, 即 log(a, b) (mod p)
- 1. BZOJ-2242-计算器-SDOI2011-BSGS
- 2. BZOJ-3122-随机数生成器-SDOI2013-BSGS 数学变形还是关键,
等比数列求和会得到分母上的(1-q), 这时最好把等式两边同乘(1-q), 而不是计算逆元. 变形结果不一样复杂度就不一样
4. 容斥原理
- 实现方式只会dfs
- 当初学的很仓促
- 1. [CODEVS 1301] 任务分配 dfs实现
- 2. BZOJ-2440-完全平方数-中山市选2011-容斥原理-莫比乌斯函数-二分查找 推导过程是关键.
因为系数正好和因数个数联系起来了, 所以用筛法求莫比乌斯函数.
5. 解线性模方程(组)
- 线性模方程就直接乘逆元.
- 方程组用中国剩余定理.
- 1. BZOJ-1951-古代猪文-SDOI2010-费马小定理+欧拉函数+lucas定理+中国剩余定理 真是神题...处理lucas定理不能用于模非质数的情况.
- 2. BZOJ-2242-计算器-SDOI2011-BSGS 第二问
6. 高斯消元
- 一种是解线性一次方程组. 一种是Xor方程组. 前者O(n^3), 后者接近O(n^2)
- 有时Gauss Joran算法比高斯消元更方便
- 在处理无解和多解的时候我不太明白
- 1. BZOJ-1923-外星千足虫-SDOI2010 bitset
的应用. 解异或方程组 - 2. BZOJ-2337-XOR和路径 求期望. 解异或方程组
- 3. BZOJ-1013-球形空间产生器sphere 列方程,
化简解 - 4. BZOJ-2115-Xor-WC2011 线性基
7. 矩阵乘法
- 这是这里面做题最多的算法了
- 比较有用吧, 主要处理一些死板的而n又很大的递推式
- O(n^3), 如果发现是循环矩阵则可以优化到O(n^2)
- 1. [CODEVS 3147] 矩阵乘法 2 挖掘矩阵乘法的性质
- 2. [CODEVS 1281] Xn数列 比较基本的题目
- 3. BZOJ-2326-数学作业-HNOI2011-矩阵乘法 分段动态规划
- 4. BZOJ-1875-HH去散步-SDOI2009-矩阵乘法 图上的动态规划
- 5. BZOJ-1009-GT考试-HNOI2008 和KMP算法结合起来,
用到了失配函数. 细节有太多需要注意了.
8. 群论
- 感觉也比较偏数学吧
- 围绕burnside引理和polya定理展开
- [codevs
2926] 黑白瓷砖(2002年安徽省队选拔赛) polya定理会用, 注意置换要满足封闭性
9. 其他
- 数学思维
- 1. BZOJ-2659-算不出的算式 找到几何意义
- 2. BZOJ-1053-反素数ant 搜索
- 3. BZOJ-几道比较有趣的题目
- 4. BZOJ-1192-鬼谷子的钱袋 二进制的思想
- 5. BZOJ-1406-密码箱-AHOI2007-数学 巧妙地变形
- 6. [vijos
P1919] 最有活力的鲜花 求期望
总结: 往往一个变形拯救世界. 做数学题就是要开脑洞吧, 敢猜想才更可能找到正解. 猜的方向也很重要.
时间: 2024-10-13 19:00:32