当前位置: 首页 > news >正文

义乌市住房和城乡建设局网站wordpress保存菜单

义乌市住房和城乡建设局网站,wordpress保存菜单,先备案还是先做网站,网站建设框架注意事项文章目录 写在前面算法1#xff1a;朴素算法思路缺点 算法2#xff1a;递推预处理思路时间复杂度#xff1a; O ( n 2 ) O(n^2) O(n2) 算法3#xff1a;阶乘逆元思路时间复杂度#xff1a; O ( n log ⁡ n ) O(n \log n) O(nlogn)思考#xff1a;读者也可以尝试写 O ( n… 文章目录 写在前面算法1朴素算法思路缺点 算法2递推预处理思路时间复杂度 O ( n 2 ) O(n^2) O(n2) 算法3阶乘逆元思路时间复杂度 O ( n log ⁡ n ) O(n \log n) O(nlogn)思考读者也可以尝试写 O ( n ) O(n) O(n) 预处理阶乘逆元。 算法4Lucas 定理思路时间复杂度 O ( p × log ⁡ p n ) O(p \times \log_p n) O(p×logp​n) 写在前面 我上次发了一篇题解C排列与组合算法详解 最开始我是抱着水题解的想法写的但却成为了阅读量 最高 的文章没有之一。 所以今天咱们来重制一篇文章介绍几个进阶优化版的算法。 算法1朴素算法 思路 具体见 C排列与组合算法详解 缺点 不能将结果取模因为朴素的组合公式在取模意义下没用。 算法2递推预处理 思路 我们发现 C a 0 1 C a b C a − 1 b C a − 1 b − 1 ( a , b 0 ) C_a^0 1\\ C_a^bC_{a-1}^bC_{a-1}^{b-1}(a,b0) Ca0​1Cab​Ca−1b​Ca−1b−1​(a,b0) 所以我们可以写一个递推函数部分非主要内容已省略 void init_C() {for (int i 0; i N; i ) // N 表示预处理最大的下标for (int j 0; j i; j )if (!j) c[i][j] 1;else c[i][j] (c[i - 1][j] c[i - 1][j - 1]) % P; }再预处理阶乘 void f(int n) {f[0] 1;for (int i 1; i n; i )f[i] (LL)f[i - 1] * i % P; }需要排列的话还可以预处理排列 void init_A(int n) {for (int i 0; i n; i )for (int j 0; j i; j )a[i][j] (LL)f[i - j] * c[i][j] % P; }时间复杂度 O ( n 2 ) O(n^2) O(n2) 可以处理 5000 5000 5000 以内规模的数据 算法3阶乘逆元 思路 根据费马小定理可得当 p p p 为质数时 a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1\pmod p ap−1≡1(modp) ∴ a p − 2 ≡ 1 a ( m o d p ) \therefore a^{p-2} \equiv \frac{1}{a}\pmod p ∴ap−2≡a1​(modp) 这就是乘法逆元通常使用在需要除法取模的情况。 这里再次提一下排列、组合公式 C a b a ! b ! ( a − b ) ! , A a b a ! b ! C_a^b\frac{a!}{b!(a-b)!},\ \ A_a^b\frac{a!}{b!} Cab​b!(a−b)!a!​,  Aab​b!a!​ 求逆元需要用到快速幂 LL qpow(LL a, LL b, LL p) {LL res 1;while (b){if (b 1) res res * a % p;b 1;a a * a % p;}return res; }然后预处理阶乘和阶乘逆元 f[0] uf[0] 1; for (int i 1; i N; i ) {f[i] (LL)f[i - 1] * i % mod;uf[i] (LL)uf[i - 1] * qpow(i, mod - 2, mod) % mod; }同样的如果输出排列、组合结果的话需要利用公式。 时间复杂度 O ( n log ⁡ n ) O(n \log n) O(nlogn) 可以处理 1 0 5 10^5 105 以内规模的数据 思考读者也可以尝试写 O ( n ) O(n) O(n) 预处理阶乘逆元。 算法4Lucas 定理 思路 由 Lucas 定理可得当 p p p 为质数时 C a b C a p b p × C a m o d p b m o d p \large{C_a^bC_{\frac{a}{p}}^{\frac{b}{p}} \times C_{a \bmod p}^{b \bmod p}} Cab​Cpa​pb​​×Camodpbmodp​ 因此我们可以写一个递归函数 LL lucas(int a, int b),递归出口是 a k p , b k p a_kp, b_kp ak​p,bk​p 。 递归的过程相当于自上向下将 C a 1 b 1 , C a 2 b 2 , … , C a k b k C_{a_1}^{b_1},C_{a_2}^{b_2},…,C_{a_k}^{b_k} Ca1​b1​​,Ca2​b2​​,…,Cak​bk​​ 添加到乘式里。 LL lucas(LL a, LL b) {if (a p b p) return C(a, b);return (LL)C(a % p, b % p) * lucas(a / p, b / p) % p; }这里面的 C(a, b) 是指 算法3 即用阶乘和阶乘逆元求组合数。 LL qpow(LL a, LL b, LL p) {int res 1;while (b){if (b 1) res res * a % p;b 1;a a * a % p;}return res; }LL C(LL a, LL b) {LL res 1;for (int i 1, j a; i b; i , j -- ){res (LL)res * j % p;res (LL) res * qpow(i, p - 2, p) % p;}return res; }同样的如果输出排列、组合结果的话需要利用公式。 时间复杂度 O ( p × log ⁡ p n ) O(p \times \log_p n) O(p×logp​n) 可以处理 a , b ≤ 1 0 18 , p ≤ 1 0 5 a,b \le 10^{18},p \le 10^5 a,b≤1018,p≤105 以内规模的数据 最后如果觉得对您有帮助的话点个赞再走吧
http://www.dnsts.com.cn/news/136554.html

相关文章:

  • 果洛wap网站建设营销推广运营 网站
  • 网站二级域名怎么设置网站建设项目书
  • 太原seo报价郑州抖音seo
  • 网站首页地址 网站域名云尚网络科技有限公司网站建设
  • 陕西省国家示范校建设专题网站设计数码产品宣传网站
  • 网站建设开发五行属性seo的作用是什么
  • 2015网站设计趋势尚仁网站建设
  • angular做的网站免费静态网页托管
  • 郑州网站建设九零后六安百姓网
  • 一个公司网站设计需求全球搜
  • 建湖哪家专业做网站网站办公室
  • 兰州新闻最新消息新河网站快排seo
  • 湖北 个人网站备案时间网站建设推广刘贺稳1
  • 搜狗站长平台主动提交win7一键优化工具
  • 网站建设微信版古典风格网站模版
  • 青岛做网站的好公司张掖交通建设投资有限责任公司网站
  • 加关键词的网站网站系统代码怎么用
  • 电脑可以做网站主机么网站加栏目
  • 如何做图让网站的图更清晰wordpress插件漏洞扫描
  • 做原创视频网站怎样查网站谁做的
  • 做一的同志小说网站为每个中小学建设网站
  • 网站开发框架的作用wordpress 4 中文手册
  • 周口市住房和城市建设局网站wordpress大学 永久链接
  • 免费自助制作永久网站没有网站如何做cps
  • wordpress本站导航在哪里dz 做企业网站
  • 重庆做企业年报在哪个网站做重庆建设工程信息网官网安全员证书查询
  • 如何给网站添加cnzz网站建设的三个步骤是什么
  • 济南网站建设推荐搜点网络NO1阿里域名注册网站
  • 昆明网站建站wordpress头像缓存
  • 哪一家网站做简历网站项目申请