【C++知识及常用算法】
文章平均质量分 56
收录c++一些知识以及概念和一些比赛中常用方法的汇总
小菜鸡加油吧
这个作者很懒,什么都没留下…
展开
-
数论——卢卡斯(Lucas)定理(板子)
文章目录Lucas定理:Lucas板子:Lucas例题ac代码Lucas定理:CabC_a^bCab modmodmod ppp === Cb/pa/p∗Camod pbmod pC_{b/p}^{a/p}*C_{a\\\mod p}^{b\\\mod p}Cb/pa/p∗Camodpbmodp modmodmod pppLucas板子:int qmi(int a, int k, int p) // 快速幂模板{ int res = 1 % p; while (k)原创 2022-05-05 12:41:19 · 664 阅读 · 3 评论 -
数论——乘法逆元求组合数
上次学过一个杨辉三角求组合数也就是暴力打表O(n2)O(n^2)O(n2)的复杂度导致很多情况下都会TLE于是想到用阶乘(因为有快速幂嘛)但是很多情况下还是会有对一个mod求余但是公式中有除法(n!(m−n)!m!\frac{n!}{(m-n)!m!}(m−n)!m!n!)我们知道(a / b) % p != (a % p) / (b % p)除非a∗b−1a * b^{-1}a∗b−1 % p = a % p * b−1b^{-1}b−1 % p那么问题来到该怎么求阶乘的倒数呢?这就有了原创 2022-05-02 15:12:47 · 672 阅读 · 0 评论 -
sort函数讲解
sort函数讲解原创 2022-01-17 19:18:02 · 535 阅读 · 0 评论 -
数论——组合数(杨辉三角与组合数的关系)
我们都知道一个结论:组合数当n,m都很小的时候可以利用杨辉三角直接求那么为什么呢?组合数:我们高中学到的组合数:CnmC^m_nCnm:从n个物品里面找出m个物品所有的方案*Cnm=n!m!(n−m)!C^m_n=\frac{n!}{m!(n-m)!}Cnm=m!(n−m)!n!杨辉三角:杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯.原创 2021-11-15 05:00:00 · 2480 阅读 · 2 评论 -
基本算法——离散化
什么是离散化?离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。——百度通俗地来说 离散化就是将一个不连续区间的值,映射在一个连续的数组当中去。假如原数组为:{1,1000000000000,30,2}离散过后数组为:{1,2,3,4}为什么要离散化?问题: 求一个区间【l,r】的和(数据范围通常是1~1e6)通常的解决方法有两种:暴力求和。时间超限前缀和求和。数组中含有1e6的时候你将数组开到1e6肯定不现实这时候就需要将原数组压缩成我们可以接受的小数组原创 2021-10-25 19:15:09 · 418 阅读 · 0 评论 -
基本算法——前缀和与差分
一维前缀和建立原数组 a: a[1], a[2], a[3], ……, a[n];构造数组s : s[1], s[2], s[3] , ……,s[n];解决问题:给定m个区间【l,r】让你求数组a(长度为n)在区间所有元素之和暴力区间求和:sum += a[l] + a[l + 1] + ……+ a[r];时间复杂度:O(n + m)利用前缀和:数组s的构造:s[i] = s[i - 1] + a[i];输出:区间【l, r】中a元素和:s[r] - s[l - 1]原理:原创 2021-10-24 09:49:03 · 1964 阅读 · 0 评论 -
学生抽奖系统 &(c ++实现)&(超简单实现)&(开后门)&(音效)
目录程序实现例程重难点分析完整源代码文件测试程序实现例程1).整理班级花名册,形成一个TXT文件,读取花名册;2).存入数组;3).抽奖(敲任意键开始,让同学们的姓名在屏幕上快速滚动,敲任意键停止, 抽中人员名字显示出来,存入一个中奖人员名单文件中)。4).增加抽奖时的气氛背景音乐,增加抽奖时名单滚动音效,增加获奖时的音效(利用 PlaySound 函数,其他音乐利用 mciSendString 函数,保证同时播放多个 wav 文件)5).设立中将名额,...原创 2021-09-26 12:20:26 · 1284 阅读 · 0 评论 -
[Error] range-based ‘for‘ loops are not allowed in C++98 mode 解决方法
第一次使用auto来循环的时候在传统的DEV上就出现了编译错误解决办法原创 2021-08-17 11:55:12 · 1106 阅读 · 1 评论 -
priority的pair建立和pair
优先队列的定义:priority_queue<Type, Container, Functional>//升序队列priority_queue <int,vector<int>,greater<int> > q;//降序队列priority_queue <int,vector<int>,less<int> >q;pair是先比较第一个元素,第一个相等比较第二个元素priority_queue<pair&原创 2021-08-12 10:55:45 · 151 阅读 · 0 评论 -
<< 和 >> 在 C++ 里面是什么意思
前言:本文讲的是c++中<<(左移)和>>(右移)的作用,以及实现的时候发生了什么,如有错误,敬请斧正,希望能对大家有所帮助原码反码补码在其之前我们要先了解计算机里面的三种机械数计算机都是通过数字的补码进行运算原码原码是人类的正常理解方式的二进制,即首位表示的是正负号,其余位表示的是数值。反码负数的反码是除了符号位不变其余的0变1,1变0,正数的反码还是它本身补码负数的补码是除了符号位不变其余的0变1,1变0,最后在再1,正数的反码还是它本身<&l原创 2021-08-05 10:40:54 · 38646 阅读 · 12 评论