最新要闻
- 200飙到1300 国庆假期有酒店涨价5倍:你还出去玩吗?
- 下班后微信办公算加班吗?法院判了
- 大众为何选择小鹏?背后原因分析
- 女子花12888元抢自助餐年卡 当事人:一天只要35元
- 网传上海迪士尼有小孩子在漂流中跳船?不实!
- 共享单车能载娃了 郑州将投放9000辆共享亲子车
- 稀土等被制约下!美国开始疯抢“白色石油”
- 女子翻看去世爸爸手机后破防了:爸爸收藏夹里全是我
- 全球最快LPDDR5T内存登场!全大核CPU架构天玑9300完成性能验证
- 吴忠交通投资开发有限公司2023年度购置纯电动新能源公交车项目公开招标
- 买车就送“地下室”!五菱宝骏云朵上市:9.58万起
- 顶级奢华!布加迪Chiron Golden Era官图发布:配8.0T W16大心脏
- 长城汽车进军印尼市场 多款智能新能源亮相车展
- 农业和植保专家组深入一线指导防灾减灾救灾
- 一天吃掉430吨面条,苏州要为苏式面制定地方标准
- 男子目不斜视闯红灯被撞还需负全责 官方提醒:等三分不抢一秒
广告
手机
![顺络电子:董事长部分股权办理股票质押业务](http://www.viltd.com/uploadfile/2022/0610/20220610103218963.jpg)
顺络电子:董事长部分股权办理股票质押业务
![深圳7月二手住宅成交2259套,中介称近期咨询客户开始增加](http://www.viltd.com/uploadfile/2022/0610/20220610103218963.jpg)
深圳7月二手住宅成交2259套,中介称近期咨询客户开始增加
- 顺络电子:董事长部分股权办理股票质押业务
- 深圳7月二手住宅成交2259套,中介称近期咨询客户开始增加
- 最新洪水形势如何?时隔多年为何又见洪水?解答来了!
- 李明俊在调研白龟湖科创新城和环湖路建设工作时强调 勇于担当负责 善于创新突破 着力打造群众满意的放心工程
- 遮天:东荒两大家族登场,庞博成为妖王,妖族公主颜如玉绝美登场
- 京运通: 我司自扩产硅片业务以来,所有单晶炉均为自供
家电
[数论第三节]高斯消元法/求组合数/卡特兰数
(资料图)
高斯消元
- 求解含有n个未知数,n个方程的多元线性方程组 O(n^3)
- 初等行变换:
- 某行乘以一个非零数
- 交换两行
- 某行加上另一行的若干倍
- 利用初等行变换将方程组化为上三角矩阵
- 解的情况:
- 完美阶梯型:唯一解
- 非完美阶梯型:
- 0 == 非0:无解
- 0 == 0:无穷解
- 步骤:
- 枚举每一列
- 找到这一列系数的绝对值最大的一行
- 将这一行与第一行交换
- 将改行的第一个数变成一(方程两边同乘某数)
- 把下面所有行的当前列的系数消成0(某行加上第一行的若干倍)
- 枚举每一列
- 代码:
const int N = 110;const double esp = 1e-6; //x < esp,则x = 0,否则 x != 0,由于浮点数精度问题,0可能是0.000001double a[N][N];int n;int gauss(){int r, c;for(r = 1, c = 1; c <= n; ++ c){//遍历每一列int t = r;for(int i = r; i <= n; ++ i) //找当前列的系数最大的行if(fabs(a[t][c]) < fabs(a[i][c]))t = i; //记录最大行if(fabs(a[t][c]) < esp) continue; //最大行系数为0说明该列系数均为0for(int i = c; i <= n + 1; ++ i) swap(a[r][i], a[t][i]);//否则交换第一行与系数最大行for(int i = n + 1; i >= c; -- i) a[r][i] /= a[r][c]; //将第一行当前列系数变为1for(int i = r + 1; i <= n; ++ i) //将下面所有行的当前列的系数变为0if(fabs(a[i][c]) > esp) //当前列系数非0for(int j = n + 1; j >= c; -- j) a[i][j] -= a[r][j] * a[i][c];r ++ ;}if(r <= n){for(int i = r; i <= n; ++ i)if(fabs(a[i][n + 1]) > esp) return 0; //无解return 1; //无数解}for(int i = n; i >= 1; -- i) //从后往前求解for(int j = i + 1; j <= n; ++ j)a[i][n + 1] -= a[i][j] * a[j][n + 1];return 2; //唯一解}int main(){cin >> n;for(int i = 1; i <= n; ++ i)for(int j = 1; j <= n + 1; ++ j)cin >> a[i][j];int t = gauss();if(t == 1) cout << "Infinite group solutions";else if(t == 0) cout << "No solution";else if(t == 2){for(int i = 1; i <= n; ++ i) printf("%.2f\n", a[i][n + 1]);}return 0;}
求组合数
- \(C_a^b = \frac{a(a-1)(a-2)···(a-b+1)}{b!}=\frac{a!}{b!(a-b)!}\)
- 一般直接用公式求组合数容易超时
- 故可以通过预处理的方式,用递推式求出所有可能的组合数
- 递推式:\(C_a^b = C_{a-1}^{b-1} + C_{a-1}^{b}\) \(O(N^2)\)
- 当a,b <= 2e3,询问n = 1e4次时
- 代码:
//询问10000次//a,b <= 2000const int N = 2e3 + 10;const int mod = 1e9 + 7;int c[N][N];int n;void init(){ for(int i = 0; i < N; ++ i) for(int j = 0; j <= i; ++ j) if(!j) c[i][j] = 1; else c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;}
- 当a,b <= 1e5,询问n = 1e4次,模数p = 1e9 + 7时
- 开二维数组会爆内存,于是利用公式,预处理出阶乘以及阶乘的逆\(O(Nlog(N))\)
- 代码:
typedef long long LL;const int N = 1e5 + 10;const int mod = 1e9 + 7;int fact[N], infact[N];int n;//快速幂int qmi(int a, int b, int p){ int res = 1; while(b){ if(b & 1) res = (LL)res * a % p; a = (LL)a * a % p; b >>= 1; } return res;}//预处理各阶乘以及阶乘的逆void init(){ fact[0] = infact[0] = 1; for(int i = 1; i < N; ++ i){ fact[i] = (LL)fact[i - 1] * i % mod; //递推式n! = (n - 1)! * n; infact[i] = (LL)infact[i - 1] * qmi(i, mod - 2, mod) % mod; //递推式(n!)^-1 = ((n - 1)!)^-1 * n^-1,取模意义下的逆就是逆元 }}int main(){ cin >> n; init(); while(n -- ){ int a, b; cin >> a >> b; cout << (LL)fact[a] * infact[b] % mod * infact[a - b] % mod << endl;//两个int最大值相乘不会爆longlong,但是三个相乘会爆 } return 0;}
- 当a,b <= 1e18,询问n = 2e5次,模数p不定时
- 两数相乘会爆longlong,利用卢卡斯定理预处理组合数 \(O(plog(N)log(p))\)
- 定理:\(C_a^b\equiv C_{a \mod p}^{b \mod p}·C_{a/p}^{b/p} \pmod p\)
- 代码:
typedef long long LL;int p;int n;//快速幂求逆元int qmi(int a, int b){ int res = 1; while(b){ if(b & 1) res = (LL)res * a % p; a = (LL)a * a % p; b >>= 1; } return res;}int C(int a, int b){ //求组合数C_a^b if(a < b) return 0; //可以不要 int x = 1, y = 1; //分子分母 for(int i = 0; i < b; ++ i){ x = (LL)x * (a - i) % p; //求分子 y = (LL)y * (i + 1) % p; //求分母 } return (LL)x * qmi(y, p - 2) % p;}//卢卡斯定理int 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; //用卢卡斯定理}int main(){ cin >> n; while(n -- ){ LL a, b; cin >> a >> b >> p; cout << lucas(a, b) << endl; } return 0;}
- 当a,b <= 5e5,询问一次,不取模时
- 此时组合数较大,需要用高精度存储结果
- 阶乘中素数的个数:
- \(v_p(n!) = \sum_{i=1}^{\infty} \left\lfloor \frac{n}{p^i} \right\rfloor\)
- 证明:将 \(n!\) 记为 \(1\times 2\times \cdots \times p\times \cdots \times 2p\times \cdots \times \lfloor n/p\rfloor p\times \cdots \times n\) 那么其中 \(p\) 的倍数有 \(p\times 2p\times \cdots \times \lfloor n/p\rfloor p=p^{\lfloor n/p\rfloor }\lfloor n/p\rfloor !\) 然后在 \(\lfloor n/p\rfloor !\) 中继续寻找 \(p\) 的倍数即可,这是一个递归的过程
- 代码:
const int N = 5e3 + 10;int primes[N], cnt;int st[N];int sum[N];//线性筛,1-n中质数就是n!中的质因子void get_primes(int a){ for(int i = 2; i <= a; ++ i){ if(!st[i]) primes[ ++ cnt] = i; for(int j = 1; primes[j] <= a / i; ++ j){ st[primes[j] * i] = 1; if(i % primes[j] == 0) break; } }}//求a!中质数p的个数int get(int a, int p){ int res = 0; while(a){ res += a / p; a /= p; } return res;}//高精度乘法vector
mul(vector &A, int b){ vector c; int t = 0; for(int i = 0; i < A.size() || t; ++ i){ if(i < A.size()) t += A[i] * b; c.push_back(t % 10); t /= 10; } while(c.size() > 1 && c.back() == 0) c.pop_back(); return c;}int main(){int a, b; cin >> a >> b; get_primes(a); for(int i = 1; i <= cnt; ++ i){ int p = primes[i]; sum[i] = get(a, p) - get(b, p) - get(a - b, p); //a!中质因子个数-b!中质因子个数-(a-b)!中质因子个数 } vector res; res.push_back(1); for(int i = 1; i <= cnt; ++ i) //累乘 for(int j = 1; j <= sum[i]; ++ j) res = mul(res, primes[i]); for(int i = res.size() - 1; i >= 0; -- i)//输出 cout << res[i]; return 0;}
卡特兰数
- \(C_{2n}^n-C_{2n}^{n-1}=\frac{1}{n+1}·C_{2n}^n\)
- 用于解决序列排列等问题
- AcWing 889. 满足条件的01序列 - AcWing
- 代码:
#include
using namespace std;typedef long long LL;const int N = 1e5 + 10;const int p = 1e9 + 7;int n;int qmi(int a, int k){ int res = 1; while(k){ if(k & 1) res = (LL)res * a % p; a = (LL)a * a % p; k >>= 1; } return res;}int main(){ cin >> n; int res = 1; int a = 2 * n, b = n; int x = 1, y = 1; for(int i = 0; i < b; ++ i){ x = (LL)x * (a - i) % p; y = (LL)y * (i + 1) % p; } res = (LL)x * qmi(y, p - 2) % p; res = (LL)res * qmi(n + 1, p - 2) % p; cout << res; return 0;}
关键词:
-
-
-
-
[数论第三节]高斯消元法/求组合数/卡特兰数
200飙到1300 国庆假期有酒店涨价5倍:你还出去玩吗?
下班后微信办公算加班吗?法院判了
大众为何选择小鹏?背后原因分析
女子花12888元抢自助餐年卡 当事人:一天只要35元
网传上海迪士尼有小孩子在漂流中跳船?不实!
共享单车能载娃了 郑州将投放9000辆共享亲子车
稀土等被制约下!美国开始疯抢“白色石油”
女子翻看去世爸爸手机后破防了:爸爸收藏夹里全是我
全球最快LPDDR5T内存登场!全大核CPU架构天玑9300完成性能验证
吴忠交通投资开发有限公司2023年度购置纯电动新能源公交车项目公开招标
记录一个,百度云直链解析的方法和地址
后缀数组C++详解
买车就送“地下室”!五菱宝骏云朵上市:9.58万起
顶级奢华!布加迪Chiron Golden Era官图发布:配8.0T W16大心脏
长城汽车进军印尼市场 多款智能新能源亮相车展
农业和植保专家组深入一线指导防灾减灾救灾
一天吃掉430吨面条,苏州要为苏式面制定地方标准
男子目不斜视闯红灯被撞还需负全责 官方提醒:等三分不抢一秒
首发1999元 JBL冲击波五代蓝牙音箱上架:20小时长续航
想买电车?等一等宁德时代发布会再说
淘宝用户又回来了!阿里巴巴:核心业绩全面超预期
县城整治医药腐败 数百人主动退赃 网友:希望从严处置别自罚三杯!
财政部、水利部紧急下达15亿元水利救灾资金 支持受灾地区做好水利水毁设施修复工作
年度性能之王Redmi K60至尊版稳了!员工:友商等着瞧吧
阿里组织变革后首份财报发布:2024第一财季营收2341.6亿元 增长14%
大梁+四驱 后排还有2米纯平大床!全新哈弗H5开启预订
Dota2发布周边商城运营事故处理公告:涉事人员调离
月活8.77亿!淘宝稳居电商平台第一
七大车企组成充电联盟“死磕”特斯拉
《人脸识别技术应用安全管理规定(征求意见稿)》,需要关注三个焦点
【车载测试】CAN协议、CAN- FD协议和FlexRay协议 区别
损害工商界利益 扰乱产业链供应链——美国对外投资审查行政令引发质疑和担忧
西蒙尼专访:今夏没和若昂谈过;不认为他在马竞有所保留
iPhone 15 Pro Max无缘!三星M13 OLED屏曝光
国内消费者给足面子 大众ID.3 7月销量3倍暴涨!仅售12.69万起
续航夸张!雷军4个字评价小米MIX Fold 3续航:遥遥领先
电子墨水屏又出新用途:夏普推出13/25英寸彩色墨水电子海报
电影《我不是药神》白血病人饰演者成捐髓者:网友点赞
债市日报:8月10日
【财经分析】从“万盏灯火”到“流连忘返” 夜间消费实现多元蜕变
《莲花楼》李相夷死了吗 剧里李莲花是不是活着
荣耀新一代16英寸锐龙本开卖:标压7840HS首发仅4399元
上市一周年狂卖近10万台:比亚迪海豹拿奖拿到手软!
明明天气挺好 火车却为何停运?官方解答来了
折叠屏折痕问题被根治!小米MIX Fold 3使用5年后 折痕近乎没变
刚发布一个月 索尼A6700微单曝显示屏颜色BUG 官方紧急修复
国家电网开展抢修复电 这些受灾地区电力设施已恢复→
manacher(马拉车)算法C++详解
科创板收盘播报:科创50指数涨0.19% 电气设备股多数上涨
AI不行了?英伟达市值一夜蒸发3700亿元:85倍市盈率太夸张
王传福"三哭"比亚迪:烧钱、被嘲笑、一度只求别死掉
优化“大船感” 理想汽车魔毯空悬2.0正式推送:转弯刹车更稳定
韩国LK-99室温超导被打假 中科院指出假象来源:硫化亚铜杂质
《街头霸王6》忍者神龟DLC引热议 玩家吐槽定价过高
2023年全球低碳冶金创新论坛暨第十二届中国国际钢铁大会将于10月举行
【专题】快速幂
阜康民警张全会:心系群众,守护辖区温馨
斥资万亿美元!沙特要建全球最高建筑:占地超306平方公里
老外天天用的家电在中国却不吃香 原因让人服气
电视卖不出去了 销量暴跌25%!第一名换人
纵享绵密!上行斋生巧福团大促:券后1.5元/枚
不是烂片!《封神第一部》总票房突破18亿 距30亿回本又进了
国盛金控8月10日快速上涨
Stable Diffusion AI绘画常用插件整理
山东布谷科技直播软件源码探索高效、稳定直播传输的技术介绍:流媒体传输技术
智能化改变城市生活:人工智能和大数据重塑智慧城市格局
【环境、社会和治理 (ESG) 】Sphera与上海道宁为您提供咨询、数据和软件的独特组合
肇民科技:公司产品有应用于氢能源车领域
1.74英寸60Hz大屏!小米手环8 Pro上架开启预约
001不会改款!极氪百万超跑官宣:打破传统千万级超豪华跑车性能垄断
新能源车砸了汽修人饭碗:油车时代月赚7万 现在只有5000
买新房可享50%契税补贴!郑州各地最新消息
仅仅7天的时间!俄军打光约50万发炮弹,乌军多线“溃败”
springboot+activiti+vue+mysql轻松搞定审批!
勒索软件野蛮生长,迷雾中企业何去何从
Power BI: 如何设置平滑曲线?
1.顺序结构习题
这么分页,小心有坑
2-1!川足终于赢了,中甲3场0球后爆发,李毅暂渡过下课危机
比百亿补贴还要低!冷酸灵泵式牙膏狂促:券后3支39.9元
华为投资控股有限公司发生工商变更 增资至513亿元
国内油价下一轮调整8月23日开启 机构预测“五连涨”
7战7捷 中国民营火箭谷神星一号遥七火箭发射成功:7颗卫星入轨
华为满血回归对荣耀影响最大?赵明:最好的尊重是彼此用最强的产品在顶峰相见
中新观陇“新闻+”作品联展第15站:书香弥漫兰州新区 展览“艺”犹未尽
日本禁售小龙虾?歪果仁不懂美味?中国其实才是后来者
7年Wi-Fi专利战结束 三星与美国加州理工和解:赔偿未公布
不止骁龙8 Gen2!一加Ace2 Pro官宣24GB+1TB存储组合
美媒称月球上可能已存在生命:俄罗斯“月球-25”号明天凌晨发射 目标南极
特斯拉胜诉特斯拉啤酒商标侵权案:获赔500万!
将传感器附着在活细胞上迈出第一步:单细胞纳米“文身”可提前预警疾病
斗罗大陆:五位女神登场争夺后宫王座,小舞婉约中透露出的神秘感
碧昂斯出10万美元让地铁加班1小时 以便粉丝回家
复兴号高铁那么快 车头上有雨刷器吗?有:1分钟摆动45个来回
纯电版“浴皇大帝”来了 凯迪拉克全尺寸电动SUV发布 比仰望U8还大
清华发布大模型性能报告:GPT-4第一 更懂中文的还是百度
首个具有自主知识产权黑色肉兔育成:肉质优良 无膻味
中超真激烈!8队争第2,5队存降级危险,三镇距亚冠区仅差3分
蒲县宏源投资有限公司(关于蒲县宏源投资有限公司简述)