ACM_模板和学习
luke2834
A junior researcher~
展开
-
枚举组合模板
基本思路,是保存之前已经组合中,用到的最后一个下标位置,从该位置后来枚举,递归的完成组合。 若给出的初始序列有序,则组合给出的是按字典序的 在枚举的部分有一个小的剪枝。 //pre初始给0,求C(p,k),sel保存组合好的内容,yuan保存原数组 void zuHe(int pre,int p,int k,vector& sel,vector& yuan) { //sel.size(原创 2015-01-26 18:19:04 · 892 阅读 · 0 评论 -
枚举排列模板
对A(k , p)种状态进行枚举 大致思路,递归始终让序列左半部分是以排列好的,右半部分递归的去排列。数组中元素可以重复。 以下代码是状态不要求按字典序输出的//A(k,p) //排列保存在全局数组a中,a初始不要求排序 void dfs(int dep,int k,int p) { if(dep == k) { //do something go(); return; }原创 2015-01-25 19:30:33 · 578 阅读 · 0 评论 -
分解质因数
Pollard Rho快速因数分解。该算法时间复杂度为O(n^(1/4)) int fenJie(ll x,vector& v) { ll i = 2; v.clear(); while(i*i <= x) { while(x%i == 0) { x /= i; v.push_back(i); } i++; } if(x > 1) //x 是质数 {原创 2015-01-23 10:15:41 · 495 阅读 · 0 评论 -
混合图的欧拉回路(通路)判定
转的是邝神的解释~ 原文:http://www.cnblogs.com/kuangbin/p/3537525.html 就是对有无向边和有向边的混合图,判断存不存在欧拉回路。 参考下面的解释: 【混合图】 混合图(既有有向边又有无向边的图)中欧拉环、欧拉路径的判定需要借助网络流! (1)欧拉环的判定: 一开始当然是判断原图的基图是否连通,若不连通则一定不存在欧拉环或欧转载 2015-03-30 12:32:48 · 524 阅读 · 0 评论 -
ACM数论一些简单结论和编程小技巧总结
前言 最近被数论的模运算卡了一发。。稍微总结一下最近用到的数论结论 另外,get了一些实现的技巧,也一起记一下~免得忘了~ 数论简单结论 n = p(1) ^ num(1) * p(2) ^ num(2) … * p(m) ^ num(m),根据乘法原理,n的因子数有(num(1) + 1) * … *(num(m) + 1) 根据费马小定理推得:a^x % p = a^(x%(p-1) ) %原创 2016-01-10 23:05:00 · 2033 阅读 · 0 评论 -
从汉诺塔问题谈递归转非递归的通法
Introduction 递归方法是我们经常使用的一种实现策略,只要思路清晰,实现起来就会非常简单。 然而,递归方法也是有一些缺点的,比如需要使用系统栈维护现场,资源及时间的开销都比非递归要大的多。而在acm竞赛中,也会有系统栈大小的限制,如果递归深度过深,很有可能爆栈。因此,有时非递归转递归还是很有必要的。 当然,我们都知道递归转非递归无非就是我们维护一个栈,模拟系统栈就好啦~然而,具体怎么模拟,原创 2017-01-16 11:54:44 · 1011 阅读 · 0 评论